【问题标题】:JAVA UDP Server Can't receive PacketJAVA UDP 服务器收不到数据包
【发布时间】:2016-10-18 23:19:07
【问题描述】:

我有一个示例代码如下,套接字绑定到 IP 10.10.88.11 和端口 9876。我用下面的 Wireshark 测试了 2 个条件。两台 PC 在同一个子网中。

  1. 从同一台电脑 (10.10.88.11) 发送 UDP 数据包 - UDP 服务器能够接收
  2. 从另一台电脑 (10.10.88.10) 发送 UDP 数据包 - UDP 服务器无法接收,但 Wireshark(在 10.10.88.11)能够捕获数据包

我已经搜索了互联网,但找不到解决方案。在创建 InetScoketAddress 时我做错了什么吗?

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

public class UDPServer {
    public static void main(String args[]) throws Exception {        

     InetSocketAddress address = new InetSocketAddress("10.10.88.11", 9876);

     DatagramSocket serverSocket = new DatagramSocket(address);
        byte[] receiveData = new byte[1024];
        byte[] sendData = new byte[1024];
        while(true)
           {
              DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
              System.out.println("Waiting to receive");
              serverSocket.receive(receivePacket);
              String sentence = new String( receivePacket.getData());
              System.out.println("RECEIVED: " + sentence);
              InetAddress IPAddress = receivePacket.getAddress();
              int port = receivePacket.getPort();
              String capitalizedSentence = sentence.toUpperCase();
              sendData = capitalizedSentence.getBytes();
              DatagramPacket sendPacket =
              new DatagramPacket(sendData, sendData.length, IPAddress, port);
              serverSocket.send(sendPacket);
           }

  }
}

【问题讨论】:

    标签: java udp


    【解决方案1】:

    我相信 Wireshark 能够在数据包被防火墙评估之前抓取数据包,这意味着您会检测到它们,但它们永远不会到达 Java 应用程序。您是否尝试停用防火墙?

    【讨论】:

    • 谢谢...从来没有想过,因为以前的防火墙已被禁用。有人启用了它。谢谢...
    • 是的,它可以工作......永远不知道wireshark能够在防火墙评估之前抓取数据包。这就是从这里学到的。谢谢。 :)
    猜你喜欢
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    相关资源
    最近更新 更多