私は、サーバーがネットワーク内のアクティブなクライアントをリッスンする例を実装しています。データグラムソケットによるネットワーク探索:マルチキャスト
私はサーバーにマルチキャストとクライアントがサーバーに応答するためにデータグラムソケットを使用しています。
と、クライアント側の
public void run() {
try {
byte[] recvBuf = new byte[15000];
DatagramPacket packet = new DatagramPacket(recvBuf, recvBuf.length);
DatagramSocket dSock = new DatagramSocket(4445);
dSock.receive(packet);
int byteCount = packet.getLength();
ByteArrayInputStream byteStream = new ByteArrayInputStream(recvBuf);
ObjectInputStream is = new ObjectInputStream(new BufferedInputStream(byteStream));
}
}:例:上記で
public void run() {
{
ObjectOutputStream os = null;
try {
InetAddress address = InetAddress.getByName("Server's IP");//Note!
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(15000);
os = new ObjectOutputStream(new BufferedOutputStream(byteStream));
os.flush();
os.flush();
byte[] sendBuf = byteStream.toByteArray();
DatagramPacket packet = new DatagramPacket(sendBuf, sendBuf.length, address, 4445);
int byteCount = packet.getLength();
}
}
}
は、クライアントがサーバーのIPアプリオリ(ハードコード)を知っている必要があります。サーバー側でコードを変更して、サーバーがクライアントにIPを送信し、クライアントがそれに応答するようにするにはどうすればよいですか?
私はソケットを使ってこれを行うことができましたが、データグラムソケットを使用することは可能ですか?
ありがとうございます!
@ peterlawrey-サーバーの側からIPを取得し、データグラムとしてクライアントに送信するように求めていますか? –
ああ、私はそれを得た!ありがとう! –
あなたはデータグラムを持つサーバとクライアントを持っておらず、送信者と受信者だけです。受信者は、パケットを送信したIPに返信することができます。 –