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

Pau*_*lor 5 java sockets udp datagram

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

bez*_*max 10

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();
   }
}
Run Code Online (Sandbox Code Playgroud)

  • `receivePacket.getData()`不仅包含接收的数据.它也包含缓冲区的未使用部分.要获取带有接收数据的String,请使用`new String(receivePacket.getData(),0,receivePacket.getLength(),StandardCharsets.UTF_8)`并将charset调整为您期望的值. (2认同)