Cogs and Levers A blog full of technical stuff

Unix Networking: Client

The following snippet outlines the skeleton of a client socket application. It’s the bare bones of what is needed to establish the client connection.

int sockfd, numbytes;
char buf[MAXDATASIZE];
struct addrinfo hints, *servinfo, *p;
int rv;
char s[INET6_ADDRSTRLEN];

/* fill out the address info */
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;

/* create the actual server address */
getaddrinfo("www.remoteplace.com", PORT, &hints, &servinfo);

/* create the socket file descriptor */
sockfd = socket(p->ai_family, p->ai_socktype, p->ai_protocol);

/* perform the network connect */
connect(sockfd, p->ai_addr, p->ai_addrlen);

/* free up the addres structure */
freeaddrinfo(servinfo);

/* receive some data on the socket */
recv(sockfd, buf, MAXDATASIZE-1, 0));

/* close the socket off */
close(sockfd);

###Further reading The getaddrinfo system call The socket system call The connect system call The recv system call The send system call