我尝试编写一个小代码来在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
答案 0 :(得分:2)
看起来函数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;
}