0

我正在尝试编写一个可靠的 udp 协议,但是我对服务器何时将连接移交给套接字感到困惑。在 java 中,tcp 服务器在特定端口上侦听,然后在接受时返回一个套接字。

Socket clientSocket = server.accept();

接受方法是在同步位交换之后还是在状态建立时返回一个套接字?

4

3 回答 3

2

当accept方法返回socket时,socket处于连接状态,在accept方法返回socket之前交换SYN/SYN-ACK包。事实上,SYN 数据包并没有在接受方法中交换。这些数据包在驱动层(TCP 堆栈)上进行交换。

如果您正在尝试编写可靠的 UDP,那么我强烈建议您查看 UDT 项目源代码。它是用 C++ 编写的,但你可以从这个项目中获得很多指导。UDT 项目写得非常好,高效且非常稳定。

http://udt.sourceforge.net/

于 2012-05-30T18:51:47.370 回答
0

Java 套接字是基于 BSD API 建模的,因此返回的套接字accept应该是全连接的。

于 2012-05-30T18:29:50.967 回答
0

首先回答这个问题 - 当接受返回时,套接字已连接。

其次,做这种事情的最好方法是使用ØMQ,因为它非常棒,而且对你有很大帮助。

最后取自这篇文章,它的工作原理是这样的:

用户数据报协议 (UDP) 是 Internet 协议套件的核心成员之一,该套件是用于 Internet 的网络协议集。使用 UDP,计算机应用程序可以将消息(在这种情况下称为数据报)发送到 Internet 协议 (IP) 网络上的其他主机,而无需事先通信来建立特殊的传输通道或数据路径。

在此处输入图像描述

于 2012-05-30T19:18:13.463 回答