Исключение Smack connect с IP для установки Windows ejabberd [дубликат]

Я думаю, мдд; в теории; чтобы определить, соответствует ли regexp A подмножество того, что соответствует регулярному выражению B , алгоритм:

  1. Вычислить минимальный детерминированный конечный автомат B , а также «объединения» A | B .
  2. Проверьте, идентичны ли два DFA. Это верно тогда и только тогда, когда A соответствует подмножеству того, что соответствует B.

Однако, вероятно, это был бы крупный проект, чтобы сделать это на практике. Существуют такие пояснения, как Построение DFA минимального состояния из регулярного выражения , но они имеют тенденцию рассматривать математически чистые регулярные выражения. Вам также придется обрабатывать расширения, которые Python добавляет для удобства. Более того, если какое-либо из расширений заставляет язык быть нерегулярным (я не уверен, что это так), вы можете не справиться с этими.

Но что вы пытаетесь сделать ? Возможно, есть более простой подход ...?

136
задан Ashish Aggarwal 27 December 2013 в 08:31
поделиться

13 ответов

Вы должны подключить свой клиентский сокет к удаленному серверу. Вместо

Socket clientSocket = new Socket("localhost", 5000);

do

Socket clientSocket = new Socket(serverName, 5000);

Клиент должен подключиться к serverName, которое должно соответствовать имени или IP-адресу окна, в котором был создан ваш ServerSocket (имя должно быть доступно с клиентской машины). BTW: Это не имя, которое важно, это все о IP-адресах ...

246
ответ дан user207421 17 August 2018 в 10:38
поделиться
  • 1
    Нет конструктора для ServerSocket с именем сервера & amp; номер порта в качестве его параметров & gt;. & lt; – Samantha Catania 29 July 2011 в 18:33
  • 2
    @Samantha Catania: Извините, сделал ошибку. Обновлен ответ. – home 29 July 2011 в 18:52
  • 3
    Я предполагаю, что она запускает их как на одной машине для тестирования, поэтому локальный хост будет удобен в использовании – S E 29 July 2011 в 19:22
  • 4
    @Aaron: Она сказала, что это работает, если клиент и сервер работают на одном компьютере (вы можете найти ответ в другом комментарии). – home 29 July 2011 в 20:21
  • 5
    «Вышеупомянутая строка связывает сокет с локальным хостом» Нет, он не связывает его с INADDR_ANY. Это позволяет принимать соединения через любой сетевой адаптер. То, что делает OP, уже правильно. Ответ полностью неверен. Downvoting. – user207421 30 July 2011 в 03:21
  • 6
    Я чувствую себя глупым, забыв о You have not started your server, но для меня это действительно проблема! – Alexis Leclerc 22 October 2014 в 17:19
  • 7
    Для меня это был неправильный номер порта. Благодаря! – Bugs Bunny 2 January 2015 в 17:00
  • 8
    Я не могу тебе плюнуть! – eversor 28 April 2015 в 16:46
  • 9
    Просто для того, чтобы четко указать - «Ядро Java просто отлично». Единственная проблема заключается в том, что мы не учитываем проблемы .. (состояние сервера, ipaddress, порт, подключение к интернету - на одном маршрутизаторе необходимо для локальных IP-адресов и т. Д.) – Vinay Bhargav 11 August 2015 в 04:10
  • 10
    Коллин, что именно вы подразумеваете под «сервером не дожидаясь приема соединений»? Люди обманывают это, как будто это что-то значит. – user207421 8 October 2015 в 12:20

Я получил эту ошибку, потому что I closed ServerSocket inside a for loop, которые пытаются принять количество клиентов внутри нее (я не закончил принимать все клины)

, поэтому будьте осторожны, где следует закрыть ваш Socket

1
ответ дан Basheer AL-MOMANI 17 August 2018 в 10:38
поделиться

У меня была такая же проблема, но запуск сервера перед запуском Client исправил его.

3
ответ дан Dao Lam 17 August 2018 в 10:38
поделиться
  • 1
    Конечно, вы должны запустить сервер перед клиентом. Сначала запуск клиента и попытка подключения к серверу означают, что вы ничего не подключаете при запуске своего сервера. – user3308043 12 June 2014 в 09:17
  • 2
    @ user3308043 Да, это было очевидно, но это было не слишком очевидно для некоторых новых программистов (вроде меня 3 года назад), поэтому я просто хотел поделиться им с теми парнями, которые были невежественны, как я. – Dao Lam 23 October 2015 в 18:51

Один момент, который я хотел бы добавить к вышеприведенным ответам, - это мой опыт -

«Я размещал на своем сервере на localhost и пытался подключиться к нему через эмулятор android, указав правильный URL-адрес, например http://localhost/my_api/login.php, и я получал сообщение об ошибке отказа "

Точка для заметки - Когда я просто зашел в браузер на ПК и использовал тот же URL-адрес (http://localhost/my_api/login.php), я получал правильный ответ

, поэтому проблема в моем случае была термином localhost, который я заменил IP-адресом для моего сервера (поскольку ваш сервер размещен на вашем компьютере), что сделало его доступным из моего эмулятора на том же ПК.


Чтобы получить IP-адрес для вашей локальной машины, вы можете использовать команду ipconfig на cmd, вы получите IPv4 примерно так же, как 192.68.xx.yy Voila .. это IP-адрес вашего компьютера, на котором у вас есть сервер. используйте вместо него localhost

http://192.168.72.66/my_api/login.php


Примечание. Вы не сможете добраться до этого частного IP-адреса с любого узла за пределами этого компьютера. (Если вам нужно, вы можете использовать Ngnix для этого)

0
ответ дан eRaisedToX 17 August 2018 в 10:38
поделиться

Номер порта всегда отличается на обоих концах

0
ответ дан Harshil Kulkarni 17 August 2018 в 10:38
поделиться

Я хотел бы проверить:

  • Имя хоста и порт, к которому вы пытаетесь подключиться к
  • На стороне сервера удалось правильно начать прослушивание
  • Брандмауэр блокирует соединение

. Простейшей отправной точкой является, вероятно, попытка подключения вручную с клиентской машины с помощью telnet или Putty. Если это удастся, проблема в коде клиента. Если это не так, вам нужно решить , почему это не так. Wireshark может помочь вам на этом фронте.

31
ответ дан Jon Skeet 17 August 2018 в 10:38
поделиться
  • 1
    Иногда я получаю это исключение. Это происходит в течение определенного периода времени. Это немедленно исключает это исключение. И тогда все становится хорошо. У меня есть брандмауэр на сервере. Но я добавил правило для входящих подключений на порт 8080. Иногда правило игнорируется? – Ashwin 30 September 2012 в 17:25
  • 2
    @Ashwin: Невозможно сказать, на самом деле - вам нужно будет точно определить, как далеко продвигаются данные. Посмотрите на журналы брандмауэра и т. Д. – Jon Skeet 30 September 2012 в 18:53
  • 3
    @JonSkeet, как настроить наш брандмауэр, если у нас есть эта ошибка? – Nikhil Pareek 19 January 2018 в 13:08
  • 4
    @Nikhil: Я не могу ответить на это, но я подозреваю, что для кого-то, у кого , потребуется больше информации, чтобы помочь вам. (Во-первых, мы не знаем, какой у вас брандмауэр ...) – Jon Skeet 19 January 2018 в 15:58

Возможно, что есть еще один экземпляр клиента, который все еще работает и прослушивает порт 5000.

-1
ответ дан Michael Munsey 17 August 2018 в 10:38
поделиться
  • 1
    Клиенты не слушают. Они говорят. – Raedwald 29 July 2014 в 08:10
  • 2
    Предыдущий экземпляр вызовет на сервере BindException, а не ConnectException на клиенте. – user207421 8 October 2015 в 12:11

У меня была такая же проблема с брокером Mqtt, что и vernemq.but, но он решил это, добавив следующее.

  1. $ sudo vmq-admin listener show

, чтобы показать список o разрешены ips и порты для vernemq

  1. $ sudo vmq-admin listener start port=1885 -a 0.0.0.0 --mountpoint /appname --nr_of_acceptors=10 --max_connections=20000

, чтобы добавить любой ip и ваш новый порт. теперь u должен иметь возможность подключаться без каких-либо проблем.

Надеюсь, он решает вашу проблему.

4
ответ дан MrOnyancha 17 August 2018 в 10:38
поделиться

Надеюсь, мой опыт может быть полезен кому-то. Я столкнулся с проблемой с той же трассировкой стека исключений, и я не мог понять, в чем проблема. Сервер базы данных, который я пытался подключить, работал, и порт был открыт и принимал соединения.

Проблема была в подключении к Интернету. Подключение к Интернету, которое я использовал, не разрешалось подключаться к соответствующему серверу. Когда я изменил детали соединения, проблема была решена.

2
ответ дан phoenix 17 August 2018 в 10:38
поделиться

У меня была такая же проблема, и проблема заключалась в том, что я не закрывал объект сокета. После использования socket.close (); задача решена. Этот код работает для меня.

ClientDemo.java

public class ClientDemo {
    public static void main(String[] args) throws UnknownHostException,
            IOException {
        Socket socket = new Socket("127.0.0.1", 55286);
        OutputStreamWriter os = new OutputStreamWriter(socket.getOutputStream());
        os.write("Santosh Karna");
        os.flush();
        socket.close();
    }
}

и ServerDemo.java

public class ServerDemo {
    public static void main(String[] args) throws IOException {
        System.out.println("server is started");
        ServerSocket serverSocket= new ServerSocket(55286);
        System.out.println("server is waiting");
        Socket socket=serverSocket.accept();
        System.out.println("Client connected");
        BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String str=reader.readLine();
        System.out.println("Client data: "+str);
        socket.close();
        serverSocket.close();

    }
}
0
ответ дан Santosh Karna 17 August 2018 в 10:38
поделиться
  • 1
    Не закрывать клиентский сокет не вызывает отказ в подключении. Не было бы be закрытие клиентского сокета, если соединение было отклонено. – user207421 31 January 2018 в 13:22

попробуйте отключиться от Интернета (вы можете отключить Wi-Fi).

-4
ответ дан Shady Sirhan 17 August 2018 в 10:38
поделиться
  • 1
    Попробуйте, почему? Какой механизм отказа это исправляет? – user207421 8 October 2015 в 22:31
  • 2
    я не уверен, почему это происходит, но в моем случае эта ошибка исчезла, когда я отключил Wi-Fi. (это означает, что выполняется, пока Интернет отключен ) – Shady Sirhan 12 October 2015 в 14:23

В моем случае мне пришлось поставить галочку рядом с Expose daemon on tcp://localhost:2375 without TLS в настройке docker (в правой части панели задач щелкните правой кнопкой мыши по docker, выберите setting)

1
ответ дан user1419243 17 August 2018 в 10:38
поделиться

В моем случае я дал сокету имя сервера (в моем случае «raspberrypi»), а вместо этого адрес IPv4 сделал это или указал, что IPv6 был сломан (имя разрешено для IPv6)

1
ответ дан Zhyano 17 August 2018 в 10:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: