Sockets 在同一端口上绑定两个不同协议时,TCP/IP如何识别正确的套接字
当然,在这里我发现了一些我以前不知道/没有意识到的事情。Sockets 在同一端口上绑定两个不同协议时,TCP/IP如何识别正确的套接字,sockets,tcp,network-programming,datagram,Sockets,Tcp,Network Programming,Datagram,当然,在这里我发现了一些我以前不知道/没有意识到的事情。 一个进程可以绑定两个不同协议的特定端口。 例如,TCP和UDP的相同端口X。(还有其他众所周知的例子吗? 但这怎么可能呢? 我的意思是如果我做了新的DatagramSocket(6789)和新服务器插座(6789) 我假设我可以在我的程序中同时接受TCP和UDP,并将其委托给不同的类。对吗? 但这实际上是如何工作的呢?java是否了解客户端是否正在使用TCP或UDP,并将套接字传递给相应的类?端口存在于协议的命名空间中。它不是相同的端口,
一个进程可以绑定两个不同协议的特定端口。
例如,
TCP
和UDP
的相同端口X
。(还有其他众所周知的例子吗?但这怎么可能呢?
我的意思是如果我做了
新的DatagramSocket(6789)代码>和新服务器插座(6789)代码>
我假设我可以在我的程序中同时接受TCP
和UDP
,并将其委托给不同的类。对吗?
但这实际上是如何工作的呢?java是否了解客户端是否正在使用TCP
或UDP
,并将套接字传递给相应的类?端口存在于协议的命名空间中。它不是相同的端口,只是相同的端口号
Java也与之无关。为什么要投否决票?请说明与Java无关;您的操作系统知道TCP和UDP之间的区别。相关:对于java,还有许多其他类似的Qgeneral@BrianRoach:因此,不知何故,这两个类的实现向操作系统注册它们的协议,并且操作系统知道在哪里传递什么连接?再次。。。TCP和UDP是完全不同的东西。使用相同的端口号是不相关的。如果客户端发送UDP数据包,UDP:6789与TCP:6789完全无关。。。这是一个UDP数据包。服务器的网络堆栈将其作为UDP数据包接收,并将其作为UDP数据包发送到您的进程。