读书人

Windows停纯C的Socket例子

发布时间: 2012-06-26 10:04:13 作者: rapoo

Windows下纯C的Socket例子

/*******   客户端程序   client.c   ************/       #include   <stdlib.h>   #include   <stdio.h>   #include   <errno.h>   #include   <string.h>   #include   <netdb.h>   #include   <sys/types.h>   #include   <netinet/in.h>   #include   <sys/socket.h>       int   main   (int   argc,   char   *argv[])     {         int   sockfd;         char   buffer[1024];         struct   sockaddr_in   server_addr;         struct   hostent   *host;         int   portnumber,   nbytes;         if   (argc   !=   3)                     {                 fprintf   (stderr,   "Usage:%s   hostname   portnumber\a\n",   argv[0]);                 exit   (1);             }         if   ((host   =   gethostbyname   (argv[1]))   ==   NULL)                     {                 fprintf   (stderr,   "Gethostname   error\n");                 exit   (1);             }         if   ((portnumber   =   atoi   (argv[2]))   <   0)                     {                 fprintf   (stderr,   "Usage:%s   hostname   portnumber\a\n",   argv[0]);                 exit   (1);             }         /*   客户程序开始建立   sockfd描述符   */             if   ((sockfd   =   socket   (AF_INET,   SOCK_STREAM,   0))   ==   -1)                     {                 fprintf   (stderr,   "Socket   Error:%s\a\n",   strerror   (errno));                 exit   (1);             }         /*   客户程序填充服务端的资料   */             bzero   (&server_addr,   sizeof   (server_addr));         server_addr.sin_family   =   AF_INET;         server_addr.sin_port   =   htons   (portnumber);         server_addr.sin_addr   =   *((struct   in_addr   *)   host->h_addr);         /*   客户程序发起连接请求   */             if   (connect   (sockfd,   (struct   sockaddr   *)   (&server_addr),     sizeof   (struct   sockaddr)     )   ==   -1)                     {                 fprintf   (stderr,   "Connect   Error:%s\a\n",   strerror   (errno));                 exit   (1);             }         /*   连接成功了   */             if   ((nbytes   =   read   (sockfd,   buffer,   1024))   ==   -1)                     {                 fprintf   (stderr,   "Read   Error:%s\n",   strerror   (errno));                 exit   (1);             }         buffer[nbytes]   =   '\0';         printf   ("I   have   received:%s\n",   buffer);         /*   结束通讯   */             close   (sockfd);         exit   (0);     }   

读书人网 >windows

热点推荐