【发布时间】:2010-10-01 03:37:42
【问题描述】:
我在使用 this code 时遇到了一些问题。问题是当我请求服务器向我发送一些数据并且客户端只是在服务器尝试向我发送数据时断开连接,应用程序存在。
这是我认为导致问题的行
int SendBinary(int *byte, int length)
{
int bytes_sent;
bytes_sent = send(connecting_socket, byte, length, 0);
return bytes_sent;
return 0;
}
void SendFile(FILE *fp, int file_size)
{
int current_char = 0;
do{
current_char = fgetc(fp);
if ( current_char == EOF )
break;
SendBinary(¤t_char, sizeof(char));
}
while(current_char != EOF);
}
任何想法我应该做些什么来防止这种情况?修改整个源代码以补充这个 sn-p。
【问题讨论】:
-
这里没有太多信息可以继续。服务器如何退出?如果是segfault,你有没有使用调试器来确定故障发生在哪里?
-
不,这不是 segfault ,只是在没有任何消息的情况下终止。
-
你不应该使用 sizeof (char)。它被定义为1,所以它只会给代码增加混乱。此外,您的代码可能已损坏,因为它会将 char 读入 int,然后将指向该 int 的指针传递给期望指向字节的指针的函数 (send())。
-
send 需要一个 void*。并且 sizeof(char) 取决于系统。确定在这种情况下它是 Unix,它是 1。但这是一个很好的做法。