socket 编写

来源:互联网 发布:糖豆软件下载 编辑:程序博客网 时间:2024/06/03 14:42

客户端

#include <WinSock2.h>#include <stdio.h>#pragma comment(lib,"ws2_32.lib")void main(){WSAData wsadata;WSAStartup(MAKEWORD(2,2),&wsadata);int sock = socket(AF_INET,SOCK_STREAM,0);printf("%d",sock);sockaddr_in addr;addr.sin_addr.S_un.S_addr = inet_addr("192.168.5.202");addr.sin_family = AF_INET;addr.sin_port = htons(8892);int n = connect(sock,(sockaddr *)&addr,sizeof(addr));printf("%d",n);if(n == INVALID_SOCKET){printf("error = %d",WSAGetLastError());}else{while(1){char buffer[256];int recvived;//recvived = recv(sock,buffer,256,0);scanf("%s", buffer);send(sock, buffer, strlen(buffer) + 1, 0);if(buffer =="bye"){closesocket(sock);break;}}}}



服务端:


#include <WinSock2.h>#include <stdio.h>#pragma comment(lib,"ws2_32.lib")DWORD WINAPI ProcessClientRequests(LPVOID lpParam);void main(){WSAData wsadata;WSAStartup(0x0202,&wsadata);HANDLE thread[10];int sock =socket(AF_INET,SOCK_STREAM,0);//printf("%d",sock);SOCKADDR_IN addr;addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addr.sin_family = AF_INET;addr.sin_port = htons(8892);int n = bind(sock,(sockaddr *)&addr,sizeof(sockaddr));   //printf("%d",n);if(n == SOCKET_ERROR){printf("error = %d",WSAGetLastError());}else{listen(sock,5);int thread_num = 0;while (true){SOCKADDR_IN addrc;int len = sizeof(sockaddr);SOCKET m_socket = accept(sock, (sockaddr *)&addrc, &len);if (thread_num < 10){thread[thread_num++] = CreateThread(NULL, 0, ProcessClientRequests, &m_socket, 0, NULL);}printf("%d\n",thread_num);}}WaitForMultipleObjects(10, thread, true, INFINITE);closesocket(sock);for (int i = 0; i < 10; i++){CloseHandle(thread[i]);}WSACleanup();}DWORD WINAPI ProcessClientRequests(LPVOID lpParam){SOCKET* clientsocket = (SOCKET*)lpParam;  //这里需要强制转换,注意:指针类型的char* msg = "Hello, my client.rn";send(*clientsocket, msg, strlen(msg) + sizeof(char), NULL);while (TRUE){char buffer[MAXBYTE] = { 0 };recv(*clientsocket, buffer, MAXBYTE, NULL);if (strcmp(buffer, "exit") == 0){break;}}closesocket(*clientsocket);return 0;}

客户端要连接的ip为服务端ip,两端口号要一直才可以。

0 0
原创粉丝点击