网络编程基础:使用TCP连接

来源:互联网 发布:网络电子游戏现场 编辑:程序博客网 时间:2024/05/17 22:18

每天学习 = =……

【TCP】服务端

Code:
  1. //////////////////////////////////////////////////////////////////////////   
  2. //  CopyRight(c) 2009, YOYO, All Rights Reserved.   
  3. //  Author: LIN YiQian   
  4. //  Created: 2009/09/17   
  5. //  Describe: TCP 服务端   
  6. //////////////////////////////////////////////////////////////////////////   
  7. #include <WinSock2.h>   
  8. #include <iostream>   
  9.   
  10. #pragma comment(lib, "ws2_32.lib")   
  11.   
  12. void main(void)   
  13. {   
  14.     WORD    wVersionRequired;   
  15.     WSADATA wsaData;   
  16.   
  17.     wVersionRequired = MAKEWORD(1, 1);      //  副版本号在前 主版本号在后   
  18.   
  19.     int nErr = WSAStartup(wVersionRequired, &wsaData);   
  20.     if (nErr != 0)   
  21.     {   
  22.         return;   
  23.     }   
  24.   
  25.     if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) //  版本错误   
  26.     {   
  27.         WSACleanup();   
  28.         return;   
  29.     }   
  30.   
  31.     SOCKET  socketServer = socket(AF_INET, SOCK_STREAM, 0);   
  32.   
  33.     SOCKADDR_IN addrServer;   
  34.     addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);    //  使用任意网卡上的IP地址   
  35.     addrServer.sin_port = htons(9989);      //  使用端口号   
  36.     addrServer.sin_family = AF_INET;   
  37.   
  38.     bind(socketServer, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));   
  39.   
  40.     listen(socketServer, 5);   
  41.   
  42.     SOCKET      socketClient;   
  43.     SOCKADDR_IN addrClient;   
  44.     int nLen = sizeof(SOCKADDR);   
  45.   
  46.     while (true)   
  47.     {   
  48.         socketClient = accept(socketServer, (SOCKADDR*)&addrClient, &nLen);   
  49.            
  50.         char szSendMsg[100];   
  51.         sprintf(szSendMsg, "Welcome %s to ND./n", inet_ntoa(addrClient.sin_addr));   
  52.         send(socketClient, szSendMsg, strlen(szSendMsg) + 1, 0);   
  53.   
  54.         char szRecvMsg[100];   
  55.         recv(socketClient, szRecvMsg, 100, 0);   
  56.         std::cout << szRecvMsg << std::endl;   
  57.   
  58.         closesocket(socketClient);   
  59.     }   
  60.   
  61.     closesocket(socketServer);   
  62.   
  63.     WSACleanup();   
  64.   
  65.     return;   
  66. }  

【TCP】客户端

Code:
  1. //////////////////////////////////////////////////////////////////////////   
  2. //  CopyRight(c) 2009, YOYO, All Rights Reserved.   
  3. //  Author: LIN YiQian   
  4. //  Created: 2009/09/17   
  5. //  Describe: TCP 客户端   
  6. //////////////////////////////////////////////////////////////////////////   
  7. #include <Winsock2.h>   
  8. #include <iostream>   
  9.   
  10. #pragma comment(lib, "ws2_32.lib")   
  11.   
  12. void main(void)   
  13. {   
  14.     WORD    wVersionRequired;   
  15.     WSADATA wsaData;   
  16.   
  17.     wVersionRequired = MAKEWORD(1, 1);   
  18.   
  19.     int nErr = WSAStartup(wVersionRequired, &wsaData);   
  20.     if (nErr != 0)   
  21.     {   
  22.         return;   
  23.     }   
  24.   
  25.     if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)   
  26.     {   
  27.         WSACleanup();   
  28.         return;   
  29.     }   
  30.   
  31.     SOCKET  socketClient = socket(AF_INET, SOCK_STREAM, 0);   
  32.   
  33.     SOCKADDR_IN addrServer;   
  34.     addrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");   
  35.     addrServer.sin_port = htons(9989);   
  36.     addrServer.sin_family = AF_INET;   
  37.   
  38.     connect(socketClient, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));   
  39.   
  40.     char szRecvMsg[100];   
  41.     recv(socketClient, szRecvMsg, 100, 0);   
  42.     std::cout << szRecvMsg << std::endl;   
  43.   
  44.     char szSendMsg[100];   
  45.     sprintf(szSendMsg, "Re from Client../n");   
  46.     send(socketClient, szSendMsg, strlen(szSendMsg) + 1, 0);   
  47.   
  48.     closesocket(socketClient);   
  49.   
  50.     WSACleanup();   
  51.   
  52.     system("pause");   
  53.   
  54.     return;   
  55. }  

 

原创粉丝点击