Вот два человека общаются. Судится по 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) выдает IOException {
new ReciveThread().start();//Прослушиватель конфигурации должен быть размещен впереди
новый SendInfo().main(args);
}
}
класс SendInfo {
public static void main(String[] args) выдает IOException {
BufferedReader bf = новый BufferedReader (новый InputStreamReader (System.in));
Строка ул = ноль;
Строковые строки = "";
while ((str = bf.readLine()) != null) {
линии += ул;
если (str.equals("ок")) {
отправить (строки);
линии = "";
}
if (str.equals("пока")) {
bf.close(); // необходимо добавить разрыв, иначе будет сигнал возврата каретки;
}
}
}
static void send(String str) {
// Сетевая программа UDP
DatagramSocket ds = ноль;
ДатаграммПакет дп = ноль;
пытаться {
ds = new DatagramSocket(3000);//Открываем номер порта
} catch (SocketException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
пытаться {
байт[] ip = новый байт[] { (байт) 10, 1, 1, (байт) 200 };
dp = новый DatagramPacket(str.getBytes(), str.length(),
InetAddress.getByAddress(ip), 9000);//фасо
} catch (UnknownHostException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
пытаться {
ds.send(дп);
System.out.println("отправка успешна");
} catch (IOException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
дс.закрыть();
}
}
класс ReciveThread расширяет поток {
общественный недействительный запуск () {
в то время как (истина) {
DatagramSocket ds = ноль;
байт[] buf = новый байт[1024];
ДатаграммПакет дп = ноль;
пытаться {
ds = new DatagramSocket(9000);//Открываем порт
} catch (SocketException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
dp = новый DatagramPacket (buf, 1024);
пытаться {
ds.receive(дп);
} catch (IOException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
String str = новая строка(dp.getData(), 0, dp.getLength()) + "from"
+ dp.getAddress().getHostAddress() + ":port" + dp.getPort();
System.out.println(str);
дс.закрыть();
}
}
}