c++ 服务器

xiaoxiao2021-02-28  47

#include <WinSock2.h>   #include <stdio.h>   #include <stdlib.h>   #pragma comment(lib, "ws2_32.lib")   void main() {     WSADATA wsaData;     int port = 5099;     char buf[] = "Server: hello, I am a server.....";     if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)     {         printf("Failed to load Winsock");         return;     }     //创建用于监听的套接字       SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);     SOCKADDR_IN addrSrv;     addrSrv.sin_family = AF_INET;     addrSrv.sin_port = htons(port); //1024以上的端口号       addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);     int retVal = bind(sockSrv, (LPSOCKADDR)&addrSrv, sizeof(SOCKADDR_IN));     if (retVal == SOCKET_ERROR) {         printf("Failed bind:%d\n", WSAGetLastError());         return;     }     if (listen(sockSrv, 10) == SOCKET_ERROR) {         printf("Listen failed:%d", WSAGetLastError());         return;     }     SOCKADDR_IN addrClient;     int len = sizeof(SOCKADDR);     while (1)     {         //等待客户请求到来             SOCKET sockConn = accept(sockSrv, (SOCKADDR *)&addrClient, &len);         if (sockConn == SOCKET_ERROR) {             printf("Accept failed:%d", WSAGetLastError());             break;         }         printf("Accept failed:%d");     //    printf("Accept client IP:[%s]\n", inet_ntoa(addrClient.sin_addr));         //发送数据           int iSend = send(sockConn, buf, sizeof(buf), 0);         if (iSend == SOCKET_ERROR) {             printf("send failed");             break;         }         char recvBuf[100];         memset(recvBuf, 0, sizeof(recvBuf));         //      //接收数据           recv(sockConn, recvBuf, sizeof(recvBuf), 0);         printf("%s\n", recvBuf);         closesocket(sockConn);     }     closesocket(sockSrv);     WSACleanup();     system("pause");

}

客户端

#include <WinSock2.h>  #include <stdio.h>  #pragma comment(lib, "ws2_32.lib")  void main(){    //加载套接字      WSADATA wsaData;    char buff[1024];    memset(buff, 0, sizeof(buff));    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)    {        printf("Failed to load Winsock");        return;    }    SOCKADDR_IN addrSrv;    addrSrv.sin_family = AF_INET;    addrSrv.sin_port = htons(5099);    addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");    //创建套接字      SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);    if (SOCKET_ERROR == sockClient) {        printf("Socket() error:%d", WSAGetLastError());        return;    }    //向服务器发出连接请求      if (connect(sockClient, (struct  sockaddr*)&addrSrv, sizeof(addrSrv)) == INVALID_SOCKET) {        printf("Connect failed:%d", WSAGetLastError());        return;    }    else    {        //接收数据          recv(sockClient, buff, sizeof(buff), 0);        printf("%s\n", buff);    }    //发送数据      char* buff2 = "hello, this is a Client....";    send(sockClient, buff, sizeof(buff2), 0);    //关闭套接字      closesocket(sockClient);    WSACleanup();    getchar();}

转载请注明原文地址: https://www.6miu.com/read-2621271.html

最新回复(0)