Как отправить пакет дейтаграммы через Интернет? - PullRequest
1 голос
/ 25 февраля 2012

Я пытаюсь создать базовую клиент-серверную программу для дейтаграмм с Java.

Я заставил сервер цепляться за порт 9321 на моем локальном компьютере.

Я сделалклиент на порту 9320 на моем локальном компьютере, затем отправьте данные по беспроводной сети маршрутизатора (192.168.1.100) на порт 9321, программа работает!

, затем я пытаюсь отправить пакет через (через маршрутизатор) интернет-IP139.195.12.183 (мой ip) на порту 9321, но это не сработало!есть исключение:

java.net.SocketException: Interrupted function call: Datagram send failed

Я настроил маршрутизатор для пересылки любого запроса на порт 9321 на мой компьютер, а затем я установил исключение для брандмауэра на моем компьютере на этом порту

это источник

String SERVER = "139.195.12.183";

sendString(SERVER, 9321, "Greetings"); <<


private void sendString(String IP, int port, String toSend) {
    byte[] buf = toSend.getBytes();
    DatagramPacket packet = null;
    try {

        packet = new DatagramPacket(buf, buf.length, InetAddress.getByName(SERVER), port);

        ds.send(packet);<<
    }catch(UnknownHostException e) {
        System.out.println("unknownhostception");
    }catch(IOException e) {
        System.err.println("ioception "+e.getMessage());

    }

}

у меня были другие ответы с другого форума, на котором было сказано:

"Как работают маршрутизаторы, вы не можете видеть свои внешние (WAN) Интернет-адрес из вашей внутренней сети (LAN). Если это то, что вы пытаетесь сделать, в этом нет ничего плохого, просто не будет работать.

Ian. "

Любое объяснение?

1 Ответ

0 голосов
/ 25 февраля 2012

Некоторые шаги, которые вы можете предпринять:

  1. Убедитесь, что код работает на двух машинах в вашей локальной сети.
  2. Убедитесь, что ping <target-ip> работает на вашем компьютере.
  3. Если это так, проверьте настройки локального и сетевого брандмауэра для блокировки порта / протокола.
  4. Если порты разблокированы, измените порт на другое.Некоторые интернет-провайдеры блокируют определенные порты.

Еще несколько причин возникновения этой ошибки:

  • Слишком большая датаграмма UDP (я полагаю?).
  • Ошибка на стороне клиента, которая не влияет на прием (видели подобные вещи с некоторыми сетевыми стеками, где ошибка была ложной.)

Postссылка на ваш код от patsebin или что-то еще, если вам нужна дополнительная информация.

...