我正在使用服务器/客户端结构在C项目上将文件从一个IP地址发送到另一个IP地址。从阅读其他帖子,我知道只有套接字关闭时,从套接字读取才会返回0。
服务器端的相关代码(socket(),bind()和accept()按预期运行)
char *toSend = malloc(packet_size);
size_t bytesRead;
while ((bytesRead = fread(toSend, sizeof(char), packet_size, fp)) > 0) {
printf("Sending: %s \n", toSend);
write(newsockfd, toSend);
usleep(packet_delay*1000000);
}
在客户端:
char buffer[256];
int numRead;
while ((numRead = read(sockfd, buffer, 255)) > 0) {
printf("read %d\n", numRead);
printf("%s\n", buffer);
fwrite(buffer, sizeof(char), 255, fp);
}
客户端connect()调用返回0表示成功,但第一次调用read(sockfd,buffer,255)返回0,尽管套接字在此时打开;这似乎不可能。有没有人有一些提示?谢谢。