gpt4 book ai didi

c++ - 通过套接字接收 GET 请求

转载 作者:太空宇宙 更新时间:2023-11-04 15:23:18 24 4
gpt4 key购买 nike

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

127.0.0.1:41233/?data=mymessage

并且我希望我的应用程序接收“mymessage”。我写了这段代码,但 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 成功时,它会返回一个新的已连接 套接字,您应该使用它来读取数据。现在您丢弃了它的返回值,除了检查 INVALID_SOCKET。正如预期的那样,recvportListener 不起作用:portListener 永远不会自行连接。

关于c++ - 通过套接字接收 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14387035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com