Server
// Server.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "winsock2.h" #include "ws2tcpip.h" #include "iphlpapi.h" #pragma comment(lib, "ws2_32.lib") #define DEFAULT_PORT "27015" int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsaData ; int iResult ; SOCKET ListenSocket = INVALID_SOCKET ; iResult = WSAStartup(MAKEWORD(2, 2), &wsaData) ; if (iResult != 0) { printf(_T("WSAStartup failed: %d\n"), iResult) ; return 1 ; } struct addrinfo * result = NULL, * ptr = NULL, hints ; char * ip = "127.0.0.1" ; ZeroMemory(&hints, sizeof(hints)) ; hints.ai_flags = AI_PASSIVE | AI_CANONNAME ; hints.ai_family = AF_INET ; hints.ai_socktype = SOCK_STREAM ; hints.ai_protocol = IPPROTO_TCP ; iResult = getaddrinfo(ip, DEFAULT_PORT, &hints, &result) ; if (iResult != 0) { printf(_T("getaddrinfo failed: %d\n"), iResult) ; WSACleanup() ; return 1 ; } ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol) ; if (ListenSocket == INVALID_SOCKET) { printf(_T("Error at socket(): %d\n"), WSAGetLastError()) ; freeaddrinfo(result) ; WSACleanup() ; return 1 ; } iResult = bind(ListenSocket, result->ai_addr, (int) result->ai_addrlen) ; if (iResult == SOCKET_ERROR) { printf(_T("bind failed: %d\n"), WSAGetLastError()) ; freeaddrinfo(result) ; closesocket(ListenSocket) ; WSACleanup() ; return 1 ; } if (listen(ListenSocket, SOMAXCONN) == SOCKET_ERROR) { printf(_T("Error at bind(): %d\n"), WSAGetLastError()) ; closesocket(ListenSocket) ; WSACleanup() ; return 1 ; } SOCKET ClientSocket = INVALID_SOCKET ; ClientSocket = accept(ListenSocket, NULL, NULL) ; if (ClientSocket == INVALID_SOCKET) { printf(_T("accept failed: %d\n"), WSAGetLastError()) ; closesocket(ListenSocket) ; WSACleanup() ; return 1 ; } #define DEFAULT_BUFLEN 512 char recvbuf[DEFAULT_BUFLEN] ; int iResult, iSendResult ; int recvbuflen = DEFAULT_BUFLEN ; do { iResult = recv(ClientSocket, recvbuf, recvbuflen, 0) ; } while (iResult > 0); return 0; }