当前位置: 首页 > 面试题库 >

java DatagramSocket接收数据Multicast Socket发送数据

须景胜
2023-03-14
问题内容

谁能给我展示一个Java实例来从DatagramSocket接收数据并通过Multicast Socket发送相同的数据


问题答案:

发送多播数据报

为了用Java发送任何类型的数据报,无论是单播,广播还是多播,都需要一个java.net.DatagramSocket

DatagramSocket socket = new DatagramSocket();

可以选择将本地端口提供给套接字必须绑定到的DatagramSocket构造函数。仅当一个人需要其他方能够在特定港口与我们联系时才需要这样做。第三个构造函数获取要绑定的本地端口和本地IP地址。(很少)与多宿主主机一起使用,在多主机上接收流量的网络适配器很重要。

 DatagramSocket socket = new DatagramSocket();

byte[] b = new byte[DGRAM_LENGTH];
DatagramPacket dgram;

dgram = new DatagramPacket(b, b.length,
  InetAddress.getByName(MCAST_ADDR), DEST_PORT);

System.err.println("Sending " + b.length + " bytes to " +
  dgram.getAddress() + ':' + dgram.getPort());
while(true) {
  System.err.print(".");
  socket.send(dgram);
  Thread.sleep(1000);
}

接收多播数据报

可以使用普通的DatagramSocket发送和接收单播和广播数据报,以及发送多播数据报。但是,为了接收多播数据报,需要一个MulticastSocket。原因很简单,需要做更多的工作来控制和接收UDP以下所有协议层的多播流量。

byte[] b = new byte[BUFFER_LENGTH];
DatagramPacket dgram = new DatagramPacket(b, b.length);
MulticastSocket socket =
  new MulticastSocket(DEST_PORT); // must bind receive side
socket.joinGroup(InetAddress.getByName(MCAST_ADDR));

while(true) {
  socket.receive(dgram); // blocks until a datagram is received
  System.err.println("Received " + dgram.getLength() +
    " bytes from " + dgram.getAddress());
  dgram.setLength(b.length); // must reset length field!
}

想要查询更多的信息:

  • 组播套接字
  • 数据报套接字


 类似资料:
  • 因此,我正在用Java编写一个程序,在DatagramSocket和DataGramPacket的帮助下发送和接收数据。问题是,当我发送数据/接收数据时,数据在我发送的程序中也会有所不同,但只是在某些情况下,比如: 但有时会起作用,比如:

  • 实现蓝牙发送和接收数据的demo。文件包含两个工程,一个接收,一个发送。 [Code4App.com]

  • 如何将数据从PHP页面发送到TCP端口? 我正在使用它,但我不能使用任何数据!还有,你知道我怎么才能暂停吗? 有什么问题?

  • 问题内容: 我正在使用套接字连接我的Android应用程序(客户端)和Java后端服务器。每次与服务器通信时,我都希望从客户端发送两个数据变量。 1)某种消息(由用户通过界面定义) 2)消息的语言(由用户通过界面定义) 我该如何发送这些消息,以便服务器将每个消息解释为一个单独的实体? 在读取了服务器端的数据并做出了适当的结论之后,我想向客户端返回一条消息。(我想我会没事的) 因此,我的两个问题是如

  • 问题内容: 我正在尝试为请求和响应应用程序创建桌面客户端。 我能够轻松地执行GET请求。但是我想知道是否有人可以帮助我确定如何进行JSON请求和响应。并将其解析为字符串,从那里我可以锻炼如何将其全部切开 问题答案: Json.net在.net世界中无处不在。