如何在使用 java 将 TCP 和 UDP 数据包发送到 Internet 之前区分它?我需要监听这些数据包并区分它是 TCP 还是 UDP。如何使用 Java 代码实现这一点?
更新:我需要将所有 TCP/IP 和 UDP 数据包重定向到服务器 (Ip),并且需要跟踪 TCP/IP 和 UDP 数据包的流量并制作日志。
如何在使用 java 将 TCP 和 UDP 数据包发送到 Internet 之前区分它?我需要监听这些数据包并区分它是 TCP 还是 UDP。如何使用 Java 代码实现这一点?
更新:我需要将所有 TCP/IP 和 UDP 数据包重定向到服务器 (Ip),并且需要跟踪 TCP/IP 和 UDP 数据包的流量并制作日志。
您无法在 Java 中看到带有 TCP 的单个数据包,但是当您使用 Socket 时,它将是 TCP,如果您使用的是 DatagramSocket,它将是 UDP。即课程不同,因此您不会混淆它们。
如果您想窥探网络适配器以查看正在发送哪种类型的数据包,您可以使用 JPCap。
如果您正在侦听套接字上的数据包,则需要指定套接字类型。
java.net.DatagramSocket
对于 UDP 和java.net.Socket
TCP,您将始终知道您收到的数据包类型。或者您是否正在寻找流量,并以这种方式区分。
如果您可以读取 ip 数据包标头信息,则可以完成。在 ip 数据包头中包含下一个协议号(6 表示 TCP,17 表示 UDP),您应该使用它来区分。