我的TCP服务器代码是这样的:
conn_fd = accept();
stream = fdopen(conn_fd...);
//...
fp = fopen(path, "r");
while ((c = getc(fp)) != EOF)
fputc(c, stream);
如果套接字由于某种原因断开(以太网线路未插入),fputc功能会阻塞调用进程吗?流缓冲区会发生什么? 如果fputc功能阻塞,我可以设置SO_SNDTIMEO来解决问题吗?
非常感谢!
答案 0 :(得分:2)
在连接终止时,所有读/写功能都将返回错误(只有在读出输入缓冲区后才开始读取失败)。如果您想确定为什么不能读/写更多数据,请检查错误。