繁体   English   中英

需要发送UDP数据包并在Java中接收响应

[英]Need to send a UDP packet and receive a response in Java

我必须发送UDP数据包并从UDP服务器获取响应。 我虽然UDP类似于Java中的java.net.DatagramPacket,但是DatagramPacket的文档似乎是你发送了一个数据包但没有得到任何回报,这是正确的使用方法还是我应该使用java。 net.Socket

UDP数据报发送和接收示例( ):

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

class UDPClient
{
   public static void main(String args[]) throws Exception
   {
      BufferedReader inFromUser =
         new BufferedReader(new InputStreamReader(System.in));
      DatagramSocket clientSocket = new DatagramSocket();
      InetAddress IPAddress = InetAddress.getByName("localhost");
      byte[] sendData = new byte[1024];
      byte[] receiveData = new byte[1024];
      String sentence = inFromUser.readLine();
      sendData = sentence.getBytes();
      DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
      clientSocket.send(sendPacket);
      DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
      clientSocket.receive(receivePacket);
      String modifiedSentence = new String(receivePacket.getData());
      System.out.println("FROM SERVER:" + modifiedSentence);
      clientSocket.close();
   }
}

您必须使用DatagramPacket和DatagramSocket。 发送数据包时,您只需发送一个数据包。 但是,当您收到数据包时,您可以获得从另一个程序发送的数据包(例如,服务器回复)

http://docs.oracle.com/javase/7/docs/api/java/net/DatagramSocket.html

套接字仅用于TCP连接。

Java文档确实介绍了如何编写客户端和服务器。

http://docs.oracle.com/javase/tutorial/networking/datagrams/clientServer.html

你想看看DatagramSocket#receive

这正是UDP和TCP套接字之间的区别。

UDP是广播,而TCP与java.net.Socket是点对点的。 UDP是即发即忘,类似于在JMS主题上发布消息。

请参阅: http//docs.oracle.com/javase/tutorial/networking/datagrams/index.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM