gpt4 book ai didi

c++ - 套接字未从客户端接收

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

int main()
{
CRc5 dec;
WSADATA wsaData;
int err;
if((err =WSAStartup(0x0002, &wsaData)) !=0)
{
printf("Init WSAStartup() failed[%d].", err);
return false;
}
//socket structure
SOCKADDR_IN addr;//addr = socket structure
int addrlen = sizeof(addr);

//making the socket
SOCKET sListen;//listenig to the incoming connections
SOCKET sConnect;//operating the connection

//setuping the socket
sConnect=socket(AF_INET,SOCK_STREAM,NULL);//sock_stream = that the socket is a connection_oriented

//setup the structure
addr.sin_addr.s_addr=inet_addr("127.0.0.1");// ip of the connection
addr.sin_family= AF_INET;
//seting the prot
addr.sin_port= htons(9958);

//sertuping Listen socket
sListen=socket(AF_INET,SOCK_STREAM,NULL);
//binding connection
bind(sListen,(SOCKADDR*)&addr,sizeof(addr));
//listening
listen(sListen,SOMAXCONN);//listing with out any limit
printf("Attempting Socket Connection\n");
printf("Wating For An Incoming Connection!\n");
for(;;)
{
if((sConnect=accept(sListen,(SOCKADDR*)&addr,&addrlen)) != INVALID_SOCKET)
{
char buf[500];
int len = strlen(buf);
recv(sConnect,buf,len,0);

}
else
{
printf("Error accepting %d\n",WSAGetLastError());
}
}
}

但它没有收到任何东西,它正在接受来自游戏客户端的套接字,然后什么也没发生,为什么!!?

最佳答案

         char buf[500];
int len = strlen(buf);
recv(sConnect,buf,len,0);

strlen(buf) 显然是一个错误。不知道这是否是 recv() 不起作用的原因,但您肯定应该改用 sizeof(buf)

你还应该知道,recv(socket, buf, 500, 0) 不一定会收到 500 个字节,即使发送方发送了 500 个字节。它可能只接收 1 个字节或 最多 500 的任何数字。

此外,它不一定会收到发件人通过单个 send() 调用发送的所有内容。套接字纯粹是一个流,没有消息边界。

我只是提到这两件事,因为它们是初学者在使用套接字时犯的“头号错误”。

关于c++ - 套接字未从客户端接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968563/

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