#include #include #include #include #pragma comment (lib, "Ws2_32.lib") #pragma comment (lib, "Mswsock.lib") #pragma comment (lib, "AdvApi32.lib") int main(){ SOCKET lsock = INVALID_SOCKET,sock = INVALID_SOCKET; struct sockaddr_in sin; WSADATA wsa; if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) { fprintf(stderr, "WSAStartup() failed\n"); return (1); } do { int reuse = 1; if ((lsock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET){ fprintf(stderr, "Failed to open socket\n"); break; } if (setsockopt(lsock, SOL_SOCKET, SO_REUSEADDR, (void *)&reuse, sizeof(int)) == SOCKET_ERROR) { fprintf(stderr, "Cannot reuse address\n"); break; } memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_port = htons(4000); sin.sin_addr.s_addr = INADDR_ANY; if (bind(lsock, (struct sockaddr*)&sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { fprintf(stderr, "Cannot bind() a socket\n"); break; } if (listen(lsock, 255) == SOCKET_ERROR) { fprintf(stderr,"closesocket function failed with error %d\n", WSAGetLastError()); break; } printf("Waiting for client to connect...\n"); sock = accept(lsock,NULL,NULL); if (sock == INVALID_SOCKET){ fprintf(stderr,"accept failed with error: %ld\n", WSAGetLastError()); break; } printf("Client connected\n"); closesocket(lsock); lsock = INVALID_SOCKET; closesocket(sock); sock = INVALID_SOCKET; } while (0); if (lsock != INVALID_SOCKET){ closesocket(lsock); } if (sock != INVALID_SOCKET){ closesocket(sock); } if (WSACleanup() != 0) { fprintf(stderr, "WSACleanup() failed\n"); } return 0; }