我正在尝试编写一个可靠的udp协议,但是当服务器将连接交给套接字时我很困惑。 在java中,tcp服务器侦听特定端口然后在accept上,返回一个套接字。
Socket clientSocket = server.accept();
在syn位交换后或者状态为Established时,accept方法是否返回套接字?
答案 0 :(得分:2)
当accept方法返回套接字时,套接字处于连接状态,并且在accept方法返回套接字之前交换SYN / SYN-ACK数据包。实际上SYN包不是在accept方法中交换的。这些数据包在驱动程序层(TCP堆栈)上交换。
如果您正在尝试编写可靠的UDP,那么我强烈建议您查看UDT项目源代码。它是用C ++编写的,但您可以从该项目中获取大量指导。 UDT项目编写得非常好,高效且非常稳定。
答案 1 :(得分:0)
Java套接字是基于BSD API建模的,因此accept
返回的套接字被认为是完全连接的。
答案 2 :(得分:0)