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

tcpClient.c

Go to the documentation of this file.
00001 /******************************************************************************/
00002 /* This file has been written by Sergio Perez Alcañiz <serpeal@disca.upv.es>  */
00003 /*            Departamento de Informática de Sistemas y Computadores          */
00004 /*            Universidad Politécnica de Valencia                             */
00005 /*            Valencia (Spain)                                                */
00006 /*                                                                            */
00007 /* The RTL-lwIP project has been supported by the Spanish Government Research */
00008 /* Office (CICYT) under grant TIC2002-04123-C03-03                            */
00009 /******************************************************************************/
00010 
00011 #include <sys/types.h>
00012 #include <sys/socket.h>
00013 #include <netinet/in.h>
00014 #include <arpa/inet.h>
00015 #include <netdb.h>
00016 #include <stdio.h>
00017 #include <unistd.h> /* close */
00018 
00019 #define SERVER_PORT 7
00020 #define MAX_MSG 100
00021 
00022 int main (int argc, char *argv[]) {
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 }
00090 

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