www.pudn.com > 5.7-tcp.rar > client.c
/* ****************************************Copyright (c)************************************************** ** Guangzhou Zhiyuan Electronic Co.,LTD. ** graduate school ** http://www.zyinside.com ** **------------------------------------- File Info ------------------------------------------------------ ** File name: client.c ** Last modified Date: 2005-12-30 ** Last Version: 1.0 ** Descriptions: client of TCP. **------------------------------------------------------------------------------------------------------ ** Created by: Ganda ** Created date: 2005-12-27 ** Version: 1.0 ** Descriptions: Preliminary version. ** **------------------------------------------------------------------------------------------------------ ** Modified by: Chenxibing ** Modified date: 2005-12-30 ** Version: 1.0.1 ** Descriptions: modified for MagicARM2410. ** ******************************************************************************************************** */ #include#include #include #include #include #include #include #include #define PORT 5000 // The port which is communicate with server #define LENGTH 256 // Buffer length int main(int argc, char *argv[]) { int sockfd; // Socket file descriptor int num; // Counter of received bytes char revbuf[LENGTH]; // Receive buffer struct sockaddr_in remote_addr; // Host address information /* Check parameters number */ if (argc != 2) { printf ("Usage: client HOST IP (ex: ./client 192.168.0.94).\n"); return (0); } /* Get the Socket file descriptor */ if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf("ERROR: Failed to obtain Socket Descriptor!\n"); return (0); } /* Fill the socket address struct */ remote_addr.sin_family = AF_INET; // Protocol Family remote_addr.sin_port = htons(PORT); // Port number inet_pton(AF_INET, argv[1], &remote_addr.sin_addr); // Net Address bzero(&(remote_addr.sin_zero), 8); // Flush the rest of struct /* Try to connect the remote */ if (connect(sockfd, (struct sockaddr *)&remote_addr, sizeof(struct sockaddr)) == -1) { printf ("ERROR: Failed to connect to the host!\n"); return (0); } else { printf ("OK: Have connected to the %s\n",argv[1]); } /* Try to connect the server */ while (strcmp(revbuf,"exit") != 0) // Check remoter command { bzero(revbuf,LENGTH); num = recv(sockfd, revbuf, LENGTH, 0); switch(num) { case -1: printf("ERROR: Receive string error!\n"); close(sockfd); return (0); case 0: close(sockfd); return(0); default: printf ("OK: Receviced numbytes = %d\n", num); break; } revbuf[num] = '\0'; printf ("OK: Receviced string is: %s\n", revbuf); } close (sockfd); return (0); }