2012-08-29 35 views
2

我有一种情况,就像我一次只能在一个端口上运行UDP和TCP一样。这是因为在我的应用程序中,任何时候任何人都可以呼叫任何协议。所以我需要不断检查传入的请求并提供请求。任何人都可以帮助我摆脱这种情况在Java?如何在同一时间在单个端口上运行tcp和udp?

+0

同一端口可以同时接收请求,但我do't认为你可以区分他们 - http://stackoverflow.com/questions/6437383/tcp-and-udp-sockets-on-same-port –

+3

@ManimaranSelvan号。所有的UDP端口都不同于所有的TCP端口,不管数量。他们占用不同的命名空间。 OP必须使用两个套接字,一个TCP和一个UDP。不存在'区分'这个请求的原因,因为他们永远不会因此而感到困惑。 – EJP

+0

@EJP - 同意.. –

回答

6

您无法检查请求是TCP还是UDP。相反,您需要添加一个侦听器,它是TCP和一个UDP侦听器。如果您使用广播或多播地址,恕我直言,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

相关问题