Windows API Reference

listen function

Header: winsock2.h

Library: Ws2_32.lib

Synopsis

#include <winsock2.h>

int listen(
    SOCKET s,
    int    iBacklog
);

Parameters

NameDescription
sSocket descriptor returned from socket. Must be a stream socket (SOCK_STREAM).
iBacklogMaximum length of the pending connections queue. If the queue is full, additional connection attempts are refused.

Return Value

Returns 0 on success. On failure, -1 is returned and extended error information can be obtained with WSAGetLastError().

Remarks

Example

#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib, "Ws2_32.lib")

int main() {
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) return 1;

    SOCKET listenSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (listenSock == INVALID_SOCKET) { WSACleanup(); return 1; }

    struct sockaddr_in srvAddr = {0};
    srvAddr.sin_family = AF_INET;
    srvAddr.sin_addr.s_addr = htonl(INADDR_ANY);
    srvAddr.sin_port = htons(8080);

    bind(listenSock, (SOCKADDR*)&srvAddr, sizeof(srvAddr));

    if (listen(listenSock, SOMAXCONN) == SOCKET_ERROR) {
        int err = WSAGetLastError();
        closesocket(listenSock);
        WSACleanup();
        return err;
    }

    printf("Server listening on port 8080...\n");
    // accept loop omitted for brevity
    closesocket(listenSock);
    WSACleanup();
    return 0;
}

See Also