The accept() function permits an incoming connection attempt on a socket.
SOCKET accept( _In_ SOCKET s, _Out_ struct sockaddr *addr, _Inout_ int *addrlen );
#ifndef UNICODE #define UNICODE #endif #include #include #include // Need to link with Ws2_32.lib #pragma comment(lib, "Ws2_32.lib") int wmain(void) { //---------------------- // Initialize Winsock. WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != NO_ERROR) { wprintf(L"WSAStartup failed with error: %ld ", iResult); return 1; } //---------------------- // Create a SOCKET for listening for // incoming connection requests. SOCKET ListenSocket; ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (ListenSocket == INVALID_SOCKET) { wprintf(L"socket failed with error: %ld ", WSAGetLastError()); WSACleanup(); return 1; } //---------------------- // The sockaddr_in structure specifies the address family, // IP address, and port for the socket that is being bound. sockaddr_in service; service.sin_family = AF_INET; service.sin_addr.s_addr = inet_addr("127.0.0.1"); service.sin_port = htons(27015); if (bind(ListenSocket, (SOCKADDR *) & service, sizeof (service)) == SOCKET_ERROR) { wprintf(L"bind failed with error: %ld ", WSAGetLastError()); closesocket(ListenSocket); WSACleanup(); return 1; } //---------------------- // Listen for incoming connection requests. // on the created socket if (listen(ListenSocket, 1) == SOCKET_ERROR) { wprintf(L"listen failed with error: %ld ", WSAGetLastError()); closesocket(ListenSocket); WSACleanup(); return 1; } //---------------------- // Create a SOCKET for accepting incoming requests. SOCKET AcceptSocket; wprintf(L"Waiting for client to connect... "); //---------------------- // Accept the connection. AcceptSocket = accept(ListenSocket, NULL, NULL); if (AcceptSocket == INVALID_SOCKET) { wprintf(L"accept failed with error: %ld ", WSAGetLastError()); closesocket(ListenSocket); WSACleanup(); return 1; } else wprintf(L"Client connected. "); // No longer need server socket closesocket(ListenSocket); WSACleanup(); return 0; }
Supports Windows 8.1,Windows Vista, Windows server 2003 (Desktop and Windows Store App)