UDP パケットを送信し、UDP サーバーから応答を返す必要があります。UDP は Java の java.net.DatagramPacket に似ていると思いましたが、DatagramPacket のドキュメントでは、パケットを送信しても何も返されないようです。 net.ソケット
4 に答える
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();
}
}
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
これがまさに UDP ソケットと TCP ソケットの違いです。
UDP はブロードキャストですが、java.net.Socket を使用する TCP はポイント ツー ポイントです。UDP はファイア アンド フォーゲットであり、JMS トピックでメッセージを発行することに似ています。
参照: http://docs.oracle.com/javase/tutorial/networking/datagrams/index.html