C++ 通过套接字接收GET请求

C++ 通过套接字接收GET请求,c++,windows,sockets,windows-7,C++,Windows,Sockets,Windows 7,如何通过套接字接收GET请求?例如,我在浏览器中编写: 127.0.0.1:41233/?数据=我的消息 我希望我的应用程序接收我的消息。我编写了这段代码,但recv返回WSAENOTCONN错误,我不知道如何修复它 int main() { WSADATA socketData; SOCKET portListener; struct sockaddr_in saInfo = {0}; if ( WSAStartup( MAKEWORD(1, 1), &

如何通过套接字接收GET请求?例如,我在浏览器中编写:

127.0.0.1:41233/?数据=我的消息

我希望我的应用程序接收我的消息。我编写了这段代码,但recv返回WSAENOTCONN错误,我不知道如何修复它

int main() {
    WSADATA socketData;
    SOCKET portListener;
    struct sockaddr_in saInfo = {0};
    if ( WSAStartup( MAKEWORD(1, 1), &socketData ) != 0) {
        printf( "WSAStartup() error!" );
        return 0;
    }
    portListener = socket( AF_INET, SOCK_STREAM, 0 );
    if ( portListener == INVALID_SOCKET ) {
        printf( "socket() error!" );
    } 
    else {
        saInfo.sin_family = AF_INET;
        saInfo.sin_port = htons(41233);
        saInfo.sin_addr.S_un.S_addr = inet_addr( "127.0.0.1" );
        if ( bind( portListener, ( sockaddr * ) &saInfo, sizeof(saInfo)) == SOCKET_ERROR ) {
            printf( "bind() error!\n" );
            closesocket( portListener );
            return 0;
        }
        if ( listen( portListener, SOMAXCONN ) == SOCKET_ERROR ) {
            printf( "listen() error!\n" );
            closesocket( portListener );
            return 0;
        }
        if ( accept( portListener, NULL, NULL ) == INVALID_SOCKET ) {
            printf( "accept() error!\n" );
            closesocket( portListener );
            return 0;
        }
        char buf[128];
        int rcvCount;
        rcvCount = recv( portListener, buf, 128, 0 );
        printf( "Error: %d\n", WSAGetLastError() );
        if ( rcvCount > 0 ) {
            printf( "%s\n", buf );
        }
        closesocket( portListener );
    }
    WSACleanup();
    return 0;
}
当accept成功时,它返回一个新连接的套接字,您应该使用它读取数据。现在,除了检查无效的\u套接字之外,您正在丢弃它的返回值。正如所料,recv不适用于portListener:portListener本身永远不会连接