Sockets JAVA-无法使用代码使UDP数据包到达目的地,但它在“数据包发送方”中工作,Wireshark显示相同的状态

Sockets JAVA-无法使用代码使UDP数据包到达目的地,但它在“数据包发送方”中工作,Wireshark显示相同的状态,sockets,networking,udp,wireshark,ethernet,Sockets,Networking,Udp,Wireshark,Ethernet,我正试图通过我工作场所的本地网络发送UDP数据包。 到目前为止,我使用了一个名为packetsender的程序,它工作得很好,但我的老板让我用Java编写一个代码来实现同样的功能 当包裹到达目的地时,它会像家庭自动化一样关闭办公室的一盏灯。 因为我的代码没有关灯,只有数据包发送者我知道出了问题,但我不知道是什么 我写了这段代码: import java.io.*; import java.net.*; import javax.xml.bind.annotation.adapters.HexB

我正试图通过我工作场所的本地网络发送UDP数据包。 到目前为止,我使用了一个名为packetsender的程序,它工作得很好,但我的老板让我用Java编写一个代码来实现同样的功能

当包裹到达目的地时,它会像家庭自动化一样关闭办公室的一盏灯。 因为我的代码没有关灯,只有数据包发送者我知道出了问题,但我不知道是什么

我写了这段代码:

import java.io.*;
import java.net.*;

import javax.xml.bind.annotation.adapters.HexBinaryAdapter;

public class UDPSend
{
 public static void main(String args[])
 {
  try {
   int port = 6670;
   //Send Hex As Bytes
   HexBinaryAdapter adapter = new HexBinaryAdapter();
   byte[] message = adapter.unmarshal("020000c818010000020300");

   // Get the internet address of the specified host
   InetAddress address = InetAddress.getByName("172.16.254.254");

   // Initialize a datagram packet with data and address
   DatagramPacket packet = new DatagramPacket(message, message.length,
       address, port);

   // Create a datagram socket, send the packet through it, close it.
   DatagramSocket dsocket = new DatagramSocket();
   dsocket.send(packet);
   dsocket.close();
  } catch (Exception e) {
   System.err.println(e);
  }
 }
}
现在,为了让您更好地理解我的问题,这里有一些打印屏幕:

ww32.speedyshare.com/PrUcv/download/stack-over-flow.png

1] -运行代码时wireshark打印屏幕。 2] -包含要发送的所有数据的数据包发送方。 3] -数据包发送者日志,您可以在其中看到它发送数据包,并执行它所做的操作 应该这样做。 4] -运行数据包发送器应用程序时Wireshark监视器

重要的!! 1.我正在办公室网络中运行代码。 2.我知道数据包发送器中的最后两个字符是01,JAVA代码中是 00,没关系!一个把灯打开,另一个也关上 它与数据包发送者的工作方式,而不是与我的代码。
3.Wireshark在我的代码和数据包发送器应用程序中显示了一个错误的校验和,不同之处在于,当我使用数据包发送器时,尽管校验和错误,它仍然可以工作。

几乎不可能读取屏幕截图中的内容以找出差异,请解决这个问题。错误的校验和通常没有任何问题,因为它只是意味着在生成数据包的同一台机器上进行捕获,网卡将插入校验和。如果需要,请找出一种关闭NIC上UDP校验和的方法。数据包发送方似乎是从固定端口发送的,所以在java应用程序中也尝试一下。作为旁注,我认为您的屏幕截图难以阅读的原因之一是它是使用有损jpeg压缩存储的。要么降低jpeg压缩比,要么使用支持无损压缩(如png)的格式,以使屏幕截图更易于查看。这里有一个更好的截图,它似乎是我发布的最后一个链接的站点,我自己将其转换为jpg,因此我上传到speedyshare: