#define _WINSOCK_DEPRECATED_NO_WARNINGS #include <iostream> #include <Winsock2.h> utilizando espacio de nombres std; #pragma comentario (lib, "Ws2_32.lib") #define PUERTO 7210 #define DIRECCIÓN_IP "192.168.0.103" #define MAX_LINE 10000 DWORD WINAPI ClientThread (LPVOID lpParameter) { struct sockaddr_in ClientAddr; int addrlen = sizeof (ClientAddr); SOCKET CientSocket = (socket) lpParameter; int iResult = 0 ; carbonizarse RecvBuffer [MAX_LINE]; mientras que ( verdadera ) { memset (RecvBuffer, 0x00 , sizeof (RecvBuffer)); iResult = recv (CientSocket, RecvBuffer, MAX_LINE, 0 ); getpeername (CientSocket, ( struct sockaddr *) y ClientAddr, y addrlen); si (iResult == 0 || iResult == SOCKET_ERROR) { cout << " 客户" << inet_ntoa (ClientAddr.sin_addr) << " : " << << ClientAddr.sin_port"Salir " << endl; // cliente salidas PAUSA ; } // servidor de información recibe la salida del tribunal << " cliente " << inet_ntoa (ClientAddr.sin_addr) << " : " << ClientAddr.sin_port < < "dice: " << recvbuffer << endl; iResult = Enviar (CientSocket, recvbuffer, ( int ) strlen (recvbuffer), 0 ); // la parte posterior cadena recibida al cliente } volver 0 ; } Int principal ( int argc, char * argv []) { WSADATA WSAData; SOCKET ServerSocket, ClientSocket; struct sockaddr_in localaddr, ClientAddr; int iReuslt = 0 ; int addrlen = 0 ; MANGO hThread = NULL; // Init Windows Socket si (WSAStartup (MAKEWORD ( 2 , 2 ), y WSAData) =! 0 ) { cout << " Init Windows Socket Error :: " << WSAGetLastError () << endl; WSACleanup (); volver - 1 ; } // Crear Socket ServerSocket = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); si (== ServerSocket INVALID_SOCKET) { cout << " 创建Socket ::失败" << WSAGetLastError () << endl; closesocket (ServerSocket); WSACleanup (); volver - 1 ; } LocalAddr.sin_family = AF_INET; LocalAddr.sin_addr.s_addr = htons (PORT); inet_addr (DIRECCIÓN_IP); LocalAddr.sin_port = memset (LocalAddr.sin_zero, 0x00 , 8 ); // Enlazar Socket iReuslt = bind (ServerSocket, ( struct sockaddr *) y localaddr, sizeof (localaddr)); si (iReuslt =! 0 ) { cout << " Enlazar Socket Error :: " << WSAGetLastError () << endl; WSACleanup (); volver - 1 ; } // escuchar iReuslt = escuchar (ServerSocket, 10 ); si (iReuslt! = 0 ) { Cout << " escuchar Socket Error :: " << WSAGetLastError () << endl; volver - 1 ; } Cout << " 服务端已经启动" << endl; mientras que ( verdadera ) { addrlen = sizeof (ClientAddr); ClientSocket = aceptar (ServerSocket, ( struct sockaddr *) y ClientAddr, y addrlen); si (ClientSocket == INVALID_SOCKET) { Cout << " Aceptar Error :: " << WSAGetLastError () << endl; romper ; } Cout << " 客户端连接:: " << inet_ntoa (ClientAddr.sin_addr) << " : " << ClientAddr.sin_port << endl; hThread = CreateThread (NULL, 0 , ClientThread, (LPVOID) ClientSocket, 0 , NULL); si (hThread == NULL) { cout << " Crear secuencia Error! "<< endl; } CloseHandle (hThread); } Closesocket (ServerSocket); closesocket (ClientSocket); WSACleanup (); volver 0 ; }