socket

    技术2024-10-07  57

    //socket_server

     

    #include <winsock2.h>#include <iostream>//using namespace std;

    void main(){ std::cout << "Start up tcp server./n";

     WSADATA wsaData; WORD sockVersion = MAKEWORD(2, 0); if(0 != WSAStartup(sockVersion, &wsaData)) {  std::cout << "Failed to retrive socket verson./n";  return; } SOCKET sock_sev; sock_sev = socket(AF_INET,SOCK_STREAM, 0); if(INVALID_SOCKET == sock_sev) {  std::cout << "Invalid socket."<< std::endl;  WSACleanup();  return; } sockaddr_in addr_sev; addr_sev.sin_family = AF_INET; addr_sev.sin_port = htons(6111); addr_sev.sin_addr.S_un.S_addr = INADDR_ANY;

     if(SOCKET_ERROR == bind(sock_sev, (sockaddr*)&addr_sev, sizeof(addr_sev))) {  std::cout << "Failed to bind" << std::endl;  WSACleanup();  return; } if(SOCKET_ERROR == listen(sock_sev, 10)) {  std::cout << "Failed to listen./n";  WSACleanup();  return; }  SOCKET sock_client; sockaddr_in addr_client; int nAddrLen = sizeof(addr_client); while(true) {  char tmp[100];

      sock_client = accept(sock_sev, (sockaddr*)&addr_client, &nAddrLen);  

      if(INVALID_SOCKET == sock_client)  {   std::cout << "Failet to accept./n";   continue;  }    sprintf(tmp, "Your IP is %s/n", inet_ntoa(addr_client.sin_addr));  send(sock_client, tmp, strlen(tmp), 0);  std::cout << "Connection from " << inet_ntoa(addr_client.sin_addr) <<std::endl;            char crecv[100];  int loop = 10;  while(loop > 0)  {   recv(sock_client, crecv, 100, 0);    std::cout << "recv from client: " << crecv << std::endl;

       loop--;  }

      closesocket(sock_client);   } }

     

    //socket_client

    #include <winsock2.h>#include <iostream>#include <windows.h>

    void main(){ std::cout << "Start up tcp client./n";

     WSADATA wsaData; WORD sockVersion = MAKEWORD(2,0); if(0 != WSAStartup(sockVersion, &wsaData)) {  std::cout << "Failed to retrive socket version./n";  return; }

     SOCKET sock_client; sock_client = socket(AF_INET, SOCK_STREAM, 0); if(INVALID_SOCKET == sock_client) {  std::cout <<"Invalid socket./n";  WSACleanup();  return; } sockaddr_in addr_sev; addr_sev.sin_family = AF_INET; addr_sev.sin_port = htons(6111); addr_sev.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); if(SOCKET_ERROR == connect(sock_client, (sockaddr*)&addr_sev, sizeof(addr_sev))) {  std::cout << "Failed to connect./n";  WSACleanup();  return; }  char buf[100]; int recv_size = 0; recv_size = recv(sock_client, buf, 100, 0);

     if(100 > recv_size) {  buf[recv_size] = '/0';  std::cout << "receive data is: "<< buf << std::endl;  memset(buf, 0, sizeof(buf)); } else {  std::cout << "receive data is overflow" << std::endl; }  int loop = 10; char input[100]; while(loop > 0) {  std::cout << "please input the words: ";  gets(input);  //send(sock_client, "this is client", strlen("this is client")+1, 0);  send(sock_client, input, strlen(input)+1, 0);  Sleep(1000);

      loop--; }

     char recvInfo[100]; recv(sock_client, recvInfo, 100, 0);

     closesocket(sock_client); WSACleanup();  return;}

     

    注:在Project->Settings->link选项卡中的Object/library modules: 添加ws2_32.lib

    最新回复(0)