简单TCP服务器端和客户端(源代码)

来源:互联网 发布:centos 安装mysql5.6 编辑:程序博客网 时间:2024/05/05 12:05

http://andylin02.iteye.com/blog/460742

Cpp代码  收藏代码
  1. #include <iostream>  
  2. #include <stdio.h>  
  3. #include <windows.h>  
  4.   
  5. using namespace std;  
  6.   
  7. #pragma comment(lib, "WS2_32.lib")  
  8.   
  9.   
  10. int main()  
  11. {  
  12.  WSADATA wsaData;  
  13.  WORD sockVersion = MAKEWORD(2, 2);  
  14.  SOCKET sock = 0;  
  15.   
  16.  if (WSAStartup(sockVersion, &wsaData) != 0)  
  17.  {  
  18.   cout << "initlization failed!" << endl;  
  19.   exit(0);  
  20.  }  
  21.   
  22.  sock = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);  
  23.   
  24.  if (sock == INVALID_SOCKET)  
  25.  {  
  26.   cout << "failed socket!" << endl;  
  27.   
  28.   return 0;  
  29.  }  
  30.   
  31.  sockaddr_in sin;  
  32.   
  33.  sin.sin_family = AF_INET;   
  34.  sin.sin_port = htons(4567);  
  35.  sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");  
  36.   
  37.  if (connect(sock, (sockaddr*)&sin, sizeof(sockaddr)) == -1)  
  38.  {  
  39.   cout << "connect failed!" << endl;  
  40.   
  41.   return 0;  
  42.  }  
  43.   
  44.  char buffer[256] = "\0";  
  45.  int  nRecv = 0;  
  46.   
  47.  nRecv = recv(sock, buffer, 256, 0);  
  48.   
  49.  if (nRecv > 0)  
  50.  {  
  51.   buffer[nRecv] = '\0';  
  52.   
  53.   cout << "reveive data: " << buffer << endl;  
  54.  }  
  55.   
  56.  closesocket(sock);  
  57.    
  58.  WSACleanup();  
  59. }  
  60.   
  61. //服务端:  
  62.   
  63. #include <iostream>  
  64. #include <stdio.h>  
  65. #include <windows.h>  
  66.   
  67. using namespace std;  
  68.   
  69. #pragma comment(lib, "WS2_32.lib")  
  70.   
  71.   
  72. int main()  
  73. {  
  74.  WSADATA wsaData;  
  75.  WORD sockVersion = MAKEWORD(2, 2);  
  76.  SOCKET sListen = 0;  
  77.  sockaddr_in sin  = {0};  
  78.  sockaddr_in remoteAddr = {0};  
  79.  char szText[] = "TCP Server Demo";  
  80.  int nAddrLen = 0;  
  81.   
  82.  nAddrLen = sizeof(sockaddr_in);  
  83.         //fill sin  
  84.  sin.sin_port = htons(4567);  
  85.  sin.sin_family = AF_INET;  
  86.  sin.sin_addr.S_un.S_addr = INADDR_ANY;  
  87.   
  88.  //init wsa  
  89.  if (WSAStartup(sockVersion, &wsaData) != 0)  
  90.  {  
  91.   cout << "initlization failed!" << endl;  
  92.   
  93.   exit(0);  
  94.  }  
  95.   
  96.  sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);  
  97.   
  98.  if (bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)  
  99.  {  
  100.   cout << "bind failed!" << endl;  
  101.   
  102.   return 0;  
  103.  }  
  104.   
  105.  if (listen(sListen, 2) == SOCKET_ERROR)  
  106.  {  
  107.   cout << "listen failed!" << endl;  
  108.   
  109.   return 0;  
  110.  }  
  111.   
  112.  SOCKET sClient = INADDR_ANY;  
  113.   
  114.  while (true)  
  115.  {  
  116.   sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);  
  117.   
  118.   if (sClient == INVALID_SOCKET)  
  119.   {  
  120.    cout << "accept failed!" << endl;  
  121.   
  122.    continue;  
  123.   }  
  124.   
  125.   send(sClient, szText, strlen(szText), 0);  
  126.   
  127.   closesocket(sClient);   
  128.   
  129.  }  
  130.   
  131.  closesocket(sListen);  
  132.   
  133.  WSACleanup();  
  134. }   

 

 

Cpp代码  收藏代码
  1. //服务端:  
Cpp代码  收藏代码
  1. #include <iostream>  
  2. #include <stdio.h>  
  3. #include <windows.h>  
  4.   
  5. using namespace std;  
  6.   
  7. #pragma comment(lib, "WS2_32.lib")  
  8.   
  9.   
  10. int main()  
  11. {  
  12.     WSADATA wsaData;  
  13.     WORD sockVersion = MAKEWORD(2, 2);  
  14.     SOCKET sListen = 0;  
  15.     sockaddr_in sin  = {0};  
  16.     sockaddr_in remoteAddr = {0};  
  17.     char szText[] = "TCP Server Demo";  
  18.     int nAddrLen = 0;  
  19.   
  20.     nAddrLen = sizeof(sockaddr_in);  
  21.     //fill sin  
  22.     sin.sin_port = htons(4567);  
  23.     sin.sin_family = AF_INET;  
  24.     sin.sin_addr.S_un.S_addr = INADDR_ANY;  
  25.   
  26.     //init wsa  
  27.     if (WSAStartup(sockVersion, &wsaData) != 0)  
  28.     {  
  29.         cout << "initlization failed!" << endl;  
  30.   
  31.         exit(0);  
  32.     }  
  33.   
  34.     sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);  
  35.   
  36.     if (bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)  
  37.     {  
  38.         cout << "bind failed!" << endl;  
  39.   
  40.         return 0;  
  41.     }  
  42.   
  43.     if (listen(sListen, 2) == SOCKET_ERROR)  
  44.     {  
  45.         cout << "listen failed!" << endl;  
  46.   
  47.         return 0;  
  48.     }  
  49.   
  50.     SOCKET sClient = INADDR_ANY;  
  51.   
  52.     while (true)  
  53.     {  
  54.         sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);  
  55.   
  56.         if (sClient == INVALID_SOCKET)  
  57.         {  
  58.             cout << "accept failed!" << endl;  
  59.   
  60.             continue;  
  61.         }  
  62.   
  63.         send(sClient, szText, strlen(szText), 0);  
  64.   
  65.         closesocket(sClient);   
  66.   
  67.     }  
  68.   
  69.     closesocket(sListen);  
  70.   
  71.     WSACleanup();  
  72. }   
 
原创粉丝点击