0

如何在使用 java 将 TCP 和 UDP 数据包发送到 Internet 之前区分它?我需要监听这些数据包并区分它是 TCP 还是 UDP。如何使用 Java 代码实现这一点?

更新:我需要将所有 TCP/IP 和 UDP 数据包重定向到服务器 (Ip),并且需要跟踪 TCP/IP 和 UDP 数据包的流量并制作日志。

4

3 回答 3

3

您无法在 Java 中看到带有 TCP 的单个数据包,但是当您使用 Socket 时,它将是 TCP,如果您使用的是 DatagramSocket,它将是 UDP。即课程不同,因此您不会混淆它们。

如果您想窥探网络适配器以查看正在发送哪种类型的数据包,您可以使用 JPCap。

于 2013-01-08T13:06:42.697 回答
2

如果您正在侦听套接字上的数据包,则需要指定套接字类型。

java.net.DatagramSocket对于 UDP 和java.net.SocketTCP,您将始终知道您收到的数据包类型。或者您是否正在寻找流量,并以这种方式区分。

于 2013-01-08T13:08:05.893 回答
1

如果您可以读取 ip 数据包标头信息,则可以完成。在 ip 数据包头中包含下一个协议号(6 表示 TCP,17 表示 UDP),您应该使用它来区分。

于 2013-01-08T13:29:44.073 回答