Paz*_*Paz 6 c sockets client wait server
我正在用 C 语言实现客户端和服务器之间的简单连接。在客户端,我处于循环中,从文件中读取;每次 BUFFER_SIZE 字节并将其发送到服务器端(没有上传错误处理)。
//client side
bytesNumInput = read(inputFileFD,bufInput,BUFFER_SIZE)
bytesSend = write(sockfd,bufInput,bytesNumInput)
Run Code Online (Sandbox Code Playgroud)
当然服务器也处于循环中。
//server side
bytesRecv = read(sockfd,bufOutput,bytesNumInput)
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是:
如果服务器读取速度比客户端快,我可以在连接中间获取 EOF 吗?
不会。EOF 表示对等方已断开连接。如果连接仍处于活动状态,read()则将阻塞,直到 (a) 至少传输一个字节、(b) 发生 EOF 或 (c) 发生错误。
读取函数是等待获取所有数据还是与从文件读取相同?
参见上文(a)。
服务器是否有可能在 1 次写入迭代中处理 2 次读取?
是的。TCP 是字节流协议,而不是消息传递协议。