我正在Linux(作业)中实现类似FTP的协议(protocol),遇到了以下问题:客户端可能能够在另一端设法执行accept()之前连接connect()和write()(但在监听之后) ())。如何在不依赖于在其他通信 channel 中传递诸如“接受成功,您可以立即写”之类的消息的情况下阻止写入操作的进行?

最佳答案

建立TCP连接之前,connect()调用不会返回。在服务器端调用accept()之前,数据不会到达服务器应用程序。但是,一旦建立了TCP连接,客户端就可以开始发送数据。服务器堆栈将对其进行缓冲,直到服务器应用程序读取它为止。

防止写操作的目的是什么?如果服务器延迟调用accept(),则TCP窗口机制将暂停数据流。

关于linux - 防止在对方接受请求之前写入套接字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3047275/

10-10 21:10
查看更多