我正在尝试编写一个可靠的 udp 协议,但是我对服务器何时将连接移交给套接字感到困惑。在 java 中,tcp 服务器在特定端口上侦听,然后在接受时返回一个套接字。
Socket clientSocket = server.accept();
接受方法是在同步位交换之后还是在状态建立时返回一个套接字?
当accept方法返回socket时,socket处于连接状态,在accept方法返回socket之前交换SYN/SYN-ACK包。事实上,SYN 数据包并没有在接受方法中交换。这些数据包在驱动层(TCP 堆栈)上进行交换。
如果您正在尝试编写可靠的 UDP,那么我强烈建议您查看 UDT 项目源代码。它是用 C++ 编写的,但你可以从这个项目中获得很多指导。UDT 项目写得非常好,高效且非常稳定。
Java 套接字是基于 BSD API 建模的,因此返回的套接字accept
应该是全连接的。