time.cpp
上传用户:swkcbjrc
上传日期:2016-04-02
资源大小:45277k
文件大小:2k
源码类别:

游戏

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "winsock.h"
  3. #include "stdlib.h"
  4. void usage(char *name)
  5. {
  6.     fprintf(stderr, "usage: %s [ip [port]]n", name);
  7. }
  8. int main(int argc,char *argv[])
  9. {
  10.     SOCKET sock;
  11.     struct sockaddr_in sa;
  12.     int err;
  13.     int servport = 5555;  /* 默认去连接的端口 */
  14.     char buff[256];      /*存放服务器端返回的信息 */
  15.     WSADATA wsd;
  16.     unsigned long uladdr;  /* 转换后的服务器地址 */
  17.     if (argc > 3 || argc < 2)
  18. {
  19.         usage(argv[0]);
  20.         return -1;
  21.     }
  22.     if (argc > 1) 
  23. {
  24.         uladdr = inet_addr(argv[1]);
  25.         if (uladdr == INADDR_NONE)
  26. {
  27.             usage(argv[0]);
  28.             return -1;
  29.         }
  30.     }
  31.     if (argc == 3)
  32. {
  33.         servport = atoi(argv[2]);
  34.         if (servport > 65535 || servport < 1) 
  35. /* 如不是合法端口,则退出*/
  36.             usage(argv[0]);
  37.             return -2;
  38.         }
  39.     }
  40.     /* 初始化WinSock1.1 */
  41.     if (WSAStartup(MAKEWORD(1,1), &wsd) != 0)
  42. {
  43.         printf("WSAStartup( ) failed !n");
  44.         return -3;
  45.     }
  46.     /* 创建连接套接字 */
  47.     printf("create Socket ...n");
  48.     sock = socket(AF_INET, SOCK_STREAM, 0);
  49.     if (sock == INVALID_SOCKET) 
  50. {
  51.         fprintf(stderr, "Socket( ) failed: %dn", WSAGetLastError( ));
  52.         return -4;
  53.     }
  54.     printf("[OK]n");
  55.     /* 填充要连接的服务器地址结构 */
  56.     memset(&sa, 0, sizeof(sa));
  57.     sa.sin_family            = AF_INET;
  58.     sa.sin_port              = htons(servport);
  59.     sa.sin_addr.S_un.S_addr   = uladdr;
  60.     /* 连接服务器 */
  61.     printf("connect ...n");
  62.     err = connect(sock, (const sockaddr *)&sa,sizeof(sa));
  63.     if (err != 0) {
  64.         fprintf(stderr, "connect( ) failed: %dn", WSAGetLastError( ));
  65.         return -5;
  66.     }
  67.     printf("[OK]n");
  68.     /* 接收返回的时间/日期信息 */
  69.     printf("recv data ...n");
  70.     memset(buff, 0, sizeof(buff));
  71.     if (recv(sock, buff, sizeof(buff), 0) == SOCKET_ERROR) {
  72.         fprintf(stderr, " recv error !n");
  73.         return -1;
  74.     }
  75.     printf("[OK]n");
  76. /* 输出返回的信息 */
  77.     printf("Server Date/time : n%sn", buff);
  78.     
  79.     closesocket(sock); /* 关闭连接套接字 */
  80.     WSACleanup( ); /* 释放资源 */
  81.     return 0;
  82. }