5

UDP パケットを送信し、UDP サーバーから応答を返す必要があります。UDP は Java の java.net.DatagramPacket に似ていると思いましたが、DatagramPacket のドキュメントでは、パケットを送信しても何も返されないようです。 net.ソケット

4

4 に答える 4

11

UDP データグラム送受信の例 ( source ):

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();
   }
}
于 2011-12-19T14:26:01.727 に答える
2

DatagramPacketとDatagramSocketを使用する必要があります。パケットを送信するときは、パケットを送信するだけです。ただし、パケットを受信すると、別のプログラムから送信されたパケットを取得できます(サーバーの応答など)。

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

ソケットはTCP接続専用です。

于 2011-12-19T14:25:14.630 に答える
2

Java のドキュメントには、クライアントとサーバーの作成方法が記載されています。

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

DatagramSocket#receiveを見たい

于 2011-12-19T14:26:06.123 に答える
1

これがまさに UDP ソケットと TCP ソケットの違いです。

UDP はブロードキャストですが、java.net.Socket を使用する TCP はポイント ツー ポイントです。UDP はファイア アンド フォーゲットであり、JMS トピックでメッセージを発行することに似ています。

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

于 2011-12-19T14:28:44.367 に答える