gpt4 book ai didi

c++ - 套接字应用程序无法正常工作

转载 作者:行者123 更新时间:2023-11-30 18:59:00 29 4
gpt4 key购买 nike

我尝试编写一个小代码来在 Windows 上通过网络发送文件,但它似乎无法正常工作。这是我的代码:

char *arrFile = readFile("test.exe");
int fileSize = getFileSize("test.exe");
int sentSize = 0;
int justSent;

while(sentSize < fileSize) {
justSent = send(sock, arrFile + sentSize, fileSize - sentSize, 0);
sentSize += justSent;
}

多次循环后发送函数出错,我不知道为什么,有人可以告诉我原因(以及解决方案:D)吗?

更新

我正在使用非阻塞套接字并收到“WSAEWOULDBLOCK”错误,但在错误后它仍然不发送任何内容,直到客户端发回某些内容:-(

上面的代码是 C,但也是 C++ :D

最佳答案

看起来函数send工作不正常。它返回 -1,然后将其添加到 justSent 中。经过几次迭代后,justSent 的负值足以导致段错误。

要解决此问题,您应该添加代码来处理错误情况(当 send 返回值 < 0 时)。

这样的事情将是一个好的开始:

while(sentSize < fileSize) 
{
justSent = send(sock, arrFile + sentSize, fileSize - sentSize, 0);
if(justSent < 0)
{
printf("Error!\n");
break;
}
sentSize += justSent;
}

关于c++ - 套接字应用程序无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899301/

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