#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
Include dependency graph for tcpClient.c:
Go to the source code of this file.
Defines | |
#define | SERVER_PORT 7 |
#define | MAX_MSG 100 |
Functions | |
int | main (int argc, char *argv[]) |
|
Definition at line 20 of file tcpClient.c. Referenced by main(). |
|
Definition at line 19 of file tcpClient.c. Referenced by main(). |
|
Definition at line 22 of file tcpClient.c. References AF_INET, gethostbyname(), htonl, htons, INADDR_ANY, NULL, in_addr::s_addr, SERVER_PORT, sockaddr_in::sin_addr, sockaddr_in::sin_family, sockaddr_in::sin_port, and SOCK_STREAM.
00022 { 00023 00024 int sd, rc, i; 00025 struct sockaddr_in localAddr, servAddr; 00026 struct hostent *h; 00027 00028 if(argc < 3) { 00029 printf("usage: %s <server> <data1> <data2> ... <dataN>\n",argv[0]); 00030 exit(1); 00031 } 00032 00033 h = gethostbyname(argv[1]); 00034 if(h==NULL) { 00035 printf("%s: unknown host '%s'\n",argv[0],argv[1]); 00036 exit(1); 00037 } 00038 00039 servAddr.sin_family = h->h_addrtype; 00040 memcpy((char *) &servAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length); 00041 servAddr.sin_port = htons(SERVER_PORT); 00042 00043 /* create socket */ 00044 sd = socket(AF_INET, SOCK_STREAM, 0); 00045 if(sd<0) { 00046 perror("cannot open socket "); 00047 exit(1); 00048 } 00049 00050 /* bind any port number */ 00051 localAddr.sin_family = AF_INET; 00052 localAddr.sin_addr.s_addr = htonl(INADDR_ANY); 00053 localAddr.sin_port = htons(0); 00054 00055 rc = bind(sd, (struct sockaddr *) &localAddr, sizeof(localAddr)); 00056 if(rc<0) { 00057 printf("%s: cannot bind port TCP %u\n",argv[0],SERVER_PORT); 00058 perror("error "); 00059 exit(1); 00060 } 00061 00062 /* connect to server */ 00063 rc = connect(sd, (struct sockaddr *) &servAddr, sizeof(servAddr)); 00064 if(rc<0) { 00065 perror("cannot connect "); 00066 exit(1); 00067 } 00068 00069 for(i=2;i<argc;i++) { 00070 00071 rc = send(sd, argv[i], strlen(argv[i]) + 1, 0); 00072 00073 if(rc<0) { 00074 perror("cannot send data "); 00075 close(sd); 00076 exit(1); 00077 00078 } 00079 00080 printf("%s: data%u sent (%s)\n",argv[0],i-1,argv[i]); 00081 00082 00083 } 00084 00085 close(sd); 00086 00087 return 0; 00088 00089 } |
Here is the call graph for this function: