ここでは二人がコミュニケーションをとっている様子が描かれています。 IPで判断しますので問題ありません。
次のようにコードをコピーします。
java.io.BufferedReaderをインポートします。
インポート java.io.IOException;
インポートjava.io.InputStreamReader;
java.net.DatagramPacketをインポートします。
java.net.DatagramSocketをインポートします。
インポート java.net.InetAddress;
インポートjava.net.SocketException;
インポート java.net.UnknownHostException;
パブリッククラス Me {
public static void main(String[] args) throws IOException {
new ReciveThread().start();//設定リスナーは前に配置する必要があります
新しい SendInfo().main(args);
}
}
クラス SendInfo {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
文字列 str = null;
文字列行 = "";
while ((str = bf.readLine()) != null) {
行 += 文字列;
if (str.equals("ok")) {
送信(行);
行 = "";
}
if (str.equals("bye")) {
bf.close(); // ブレークを追加する必要があります。追加しないと、キャリッジ リターン信号が発生します。
}
}
}
static void send(String str) {
// UDPネットワークプログラム
データグラムソケット ds = null;
データグラムパケット dp = null;
試す {
ds = new DatagramSocket(3000);//ポート番号をオープンします
} catch (SocketException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
試す {
byte[] ip = new byte[] { (バイト) 10, 1, 1, (バイト) 200 };
dp = 新しい DatagramPacket(str.getBytes(), str.length(),
InetAddress.getByAddress(ip), 9000);//faso
} catch (UnknownHostException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
試す {
ds.send(dp);
System.out.println("送信成功");
} キャッチ (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
ds.close();
}
}
class ReciveThread extends Thread {
public void run() {
while (true) {
データグラムソケット ds = null;
byte[] buf = 新しいバイト[1024];
データグラムパケット dp = null;
試す {
ds = new DatagramSocket(9000);//ポートをオープンします
} catch (SocketException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
dp = 新しいデータグラムパケット(buf, 1024);
試す {
ds.receive(dp);
} キャッチ (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
String str = new String(dp.getData(), 0, dp.getLength()) + "from"
+ dp.getAddress().getHostAddress() + ":port" + dp.getPort();
System.out.println(str);
ds.close();
}
}
}