2
我有一种情况,就像我一次只能在一个端口上运行UDP和TCP一样。这是因为在我的应用程序中,任何时候任何人都可以呼叫任何协议。所以我需要不断检查传入的请求并提供请求。任何人都可以帮助我摆脱这种情况在Java?如何在同一时间在单个端口上运行tcp和udp?
我有一种情况,就像我一次只能在一个端口上运行UDP和TCP一样。这是因为在我的应用程序中,任何时候任何人都可以呼叫任何协议。所以我需要不断检查传入的请求并提供请求。任何人都可以帮助我摆脱这种情况在Java?如何在同一时间在单个端口上运行tcp和udp?
您无法检查请求是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
同一端口可以同时接收请求,但我do't认为你可以区分他们 - http://stackoverflow.com/questions/6437383/tcp-and-udp-sockets-on-same-port –
@ManimaranSelvan号。所有的UDP端口都不同于所有的TCP端口,不管数量。他们占用不同的命名空间。 OP必须使用两个套接字,一个TCP和一个UDP。不存在'区分'这个请求的原因,因为他们永远不会因此而感到困惑。 – EJP
@EJP - 同意.. –