Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

tcpClient.c File Reference

#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[])


Define Documentation

#define MAX_MSG   100
 

Definition at line 20 of file tcpClient.c.

Referenced by main().

#define SERVER_PORT   7
 

Definition at line 19 of file tcpClient.c.

Referenced by main().


Function Documentation

int main int  argc,
char *  argv[]
 

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:


Generated on Wed Jan 14 12:59:15 2004 for RTL-lwIP-0.4 by doxygen 1.3.4