gpt4 book ai didi

c++ - Recv() 上的连接被拒绝,而发送似乎工作正常

转载 作者:太空宇宙 更新时间:2023-11-04 14:06:09 25 4
gpt4 key购买 nike

我正在尝试创建到我提供的服务器/端口的连接 - 建立连接后,我能够向它发送 ping 数据包(至少我认为我能够,因为 send() 似乎返回正确的字节数),但是当我尝试 recv() 之后,调用失败了

"Error on Receiving .. Connection Refused"  

关于为什么发送不会出错但接收会出错的任何想法?以下是导致我失败的代码部分 - 它在自己的线程上运行。 TCP 连接是在另一个线程上建立的,套接字描述符被传递给这个线程(下面称为 m_sockfd)。

void ConnectionManager::operator()()
{

int rc = 0, numBytes=0 ;
char reply[256] ;

// Send a ping
char PingPacket[23] ;
PreparePingPacket(PingPacket) ;
numBytes = send(m_sockfd,PingPacket,23,0);
if(numBytes == -1)
{
fprintf(stderr, "Error on Sending Ping .. \n") ;
return ;
}
if(numBytes < 23)
{
fprintf(stderr, "Didn't send the whole Ping Request .. %d \n", numBytes) ;
}

numBytes = recv(m_sockfd, reply, 256, 0) ;

if(numBytes == -1)
{
fprintf(stderr, "Error on Receiving .. %s \n", strerror(errno)) ;
return ;
}

ParsePacket(reply, rc) ;
}

我可以粘贴执行实际连接的代码,但我想如果它有错误,那么发送将永远不会通过开始?

感谢阅读 - 感谢您的帮助!

最佳答案

弄明白了 - 从我的角度来看,这是非常愚蠢的事情。问题出在我的 getaddrinfo() 语句上。在将它设置为全 0 之后,我以某种方式传递了“struct addrinfo”提示。这导致端点以某种方式无效。在更改结构中的值之前放置 memset 之后,这个问题就消失了。仍然不确定发送是如何进行的,但这就是问题所在。

关于c++ - Recv() 上的连接被拒绝,而发送似乎工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16783866/

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