如何在同一端口上同时运行TCP和UDP?

3

我有一个这样的情况,需要同时在一个端口上运行UDP和TCP。这是因为在我的应用程序中,任何人都可以随时调用任何协议。因此,我需要不断地检查传入的请求并提供服务。有谁能帮助我在Java中摆脱这种情况吗?


同一个端口可以接收两种请求,但我认为你无法区分它们 - https://dev59.com/Zmw15IYBdhLWcg3wuuGn - Manimaran Selvan
3
不。无论端口号是多少,所有UDP端口都与所有TCP端口不同,它们占用不同的命名空间。OP必须使用两个套接字,一个TCP和一个UDP。不存在“区分”请求的情况,因为它们从一开始就永远不会混淆。 - user207421
1个回答

7

您无法检查请求是TCP还是UDP。相反,您需要添加一个TCP监听器和一个UDP监听器。如果使用广播或多播地址,则IMHO UDP更有用。

例如:

ServerSocket ss = new ServerSocket(12345);
DatagramSocket ds = new DatagramSocket(12345);

或者

ServerSocket ss = new ServerSocket(12345);
DatagramSocket ds = new MulticastSocket(new InetSocketAddress("224.224.1.1", 12345));

在这两种情况下,TCP连接会到达ServerSocket,而UDP数据包则会到达DatagramSocket

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接