net_client.c
#include <netdb.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/select.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
/* Create socket for connection with server. */
int clientSocketFD = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (-1 == clientSocketFD)
{
perror("cannot create socket");
return EXIT_FAILURE;
}
/* Create and initialize socket address structure for connection with server. */
struct sockaddr_in stSockAddr;
memset(&stSockAddr, 0, sizeof(stSockAddr));
stSockAddr.sin_family = AF_INET;
stSockAddr.sin_port = htons(1103);
struct addrinfo hints;
memset(&hints, 0, sizeof(struct addrinfo));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
struct addrinfo *resultHints = NULL;
int res = getaddrinfo("localhost", NULL, &hints, &resultHints);
if (res != 0)
{
perror("cannot get address info");
close(clientSocketFD);
return EXIT_FAILURE;
}
struct sockaddr_in* in_addr = (struct sockaddr_in *)resultHints->ai_addr;
memcpy(&stSockAddr.sin_addr.s_addr, &in_addr->sin_addr.s_addr, sizeof(in_addr_t));
freeaddrinfo(resultHints);
/* Wait for short period until server is ready for
incoming connection requests. */
sleep(1);
/* Create connection with server. */
if (-1 == connect(clientSocketFD, (struct sockaddr *)&stSockAddr, sizeof(stSockAddr)))
{
perror("connect failed");
close(clientSocketFD);
return EXIT_FAILURE;
}
char buf[] = "Hello!\n";
/* Send data to server. */
if (-1 == send(clientSocketFD,buf,strlen(buf) + 1,0))
{
perror("send failed");
close(clientSocketFD);
return EXIT_FAILURE;
}
else
{
/* Print data sent to server to stdout. */
fprintf(stdout, "net_client sent: %s", buf);
}
/* Flush internal buffer. */
fflush(stdout);
/* Close connection with server. */
shutdown(clientSocketFD, SHUT_RDWR);
close(clientSocketFD);
return EXIT_SUCCESS;
}
Page top