-
Notifications
You must be signed in to change notification settings - Fork 0
/
socket-client.c
61 lines (50 loc) · 1.72 KB
/
socket-client.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include<stdio.h>
#include<string.h> // strlen
#include<sys/socket.h>
#include<arpa/inet.h> // inet_addr
#include<unistd.h>
/*
argc and argv are how command line arguments are passed where argc is the
number of arguments being passed into your program from the command line and
argv is the array of arguments.
*/
int main(int argc, char *argv[]){
int socket_desc;
struct sockaddr_in server;
char *message, server_reply[2000]; // this means that the variable message stores the memory address to a character
// Create Socket
socket_desc = socket(AF_INET, SOCK_STREAM, 0); // socket() creates a socket and returns a descriptor
/*
A socket with the following properties will be created:
Address Family: AF_INET (IPv4)
Type: SOCK_STREAM (enables connection oriented TCP protocol)
Protocol: 0 (IP protocol which could also be IPPROTO_IP)
*/
if (socket_desc == -1){
printf("Could not create socket");
}
server.sin_addr .s_addr = inet_addr("74.125.235.20"); // inet_addr() converts IP address to a long format.
server.sin_family = AF_INET;
server.sin_port = htons(80);
// Connect to remote server
if(connect(socket_desc, (struct sockaddr *)&server, sizeof(server))<0 ){
puts("connection error");
return 1;
}
puts("Connected\n");
// Send data
message = "GET / HTTP/1.1\r\n\r\n";
if (send(socket_desc, message, strlen(message), 0) < 0) {
puts("Send failed");
return 1;
}
puts("Data Sent\n");
// Receive a reply from the server
if(recv(socket_desc, server_reply, 2000, 0) < 0) {
puts("recv failed");
}
puts("Reply received\n");
puts(server_reply);
close(socket_desc);
return 0
}