0
3秒前に応答が "!"であれば、ポケットを送信しようとしています。その後、通知があります。待機メソッドが動作しない
ただし、「!」を受信すると、waitメソッドが異常終了し、動作を停止します。
スレッド(真)は、この問題を作成し、私は2台のコンピュータ コンピュータ1上でこのコードを実行どのように修正
Test datagram; //its current class
DatagramSocket ds;
String adress;
private final Object monitor = new Object();
//send masage
void send(String str, String adress) throws IOException {
synchronized (monitor) {
datagram = this;
this.adress = adress;
ds = new DatagramSocket(3333);
DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(), InetAddress.getByName(adress), 3333);
try {
ds.send(dp);
receive.start();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
monitor.wait(3000);
System.out.println("send");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Thread receive = new Thread() {
public void run() {
synchronized (datagram.monitor) {
while (true) {//this while make problem
DatagramPacket dp = new DatagramPacket(new byte[2048], 2048);
try {
ds.receive(dp);
String data = new String(dp.getData(), 0, dp.getLength());
if (data.equals("!")) {
System.out.println(data);
this.join();
datagram.monitor.notify();
} else {
ds.send(new DatagramPacket("!".getBytes(), 1, InetAddress.getByName(adress), 3333));
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
};
分からないながら:。 新しいテスト()」(サラムを送ります"、" 192.168.1.103 "); コンピュータ2: new Test();