Я думаю, мдд; в теории; чтобы определить, соответствует ли regexp A
подмножество того, что соответствует регулярному выражению B
, алгоритм:
B
, а также «объединения» A | B
. Однако, вероятно, это был бы крупный проект, чтобы сделать это на практике. Существуют такие пояснения, как Построение DFA минимального состояния из регулярного выражения , но они имеют тенденцию рассматривать математически чистые регулярные выражения. Вам также придется обрабатывать расширения, которые Python добавляет для удобства. Более того, если какое-либо из расширений заставляет язык быть нерегулярным (я не уверен, что это так), вы можете не справиться с этими.
Но что вы пытаетесь сделать ? Возможно, есть более простой подход ...?
Вы должны подключить свой клиентский сокет к удаленному серверу. Вместо
Socket clientSocket = new Socket("localhost", 5000);
do
Socket clientSocket = new Socket(serverName, 5000);
Клиент должен подключиться к serverName, которое должно соответствовать имени или IP-адресу окна, в котором был создан ваш ServerSocket
(имя должно быть доступно с клиентской машины). BTW: Это не имя, которое важно, это все о IP-адресах ...
Я получил эту ошибку, потому что I closed ServerSocket inside a for loop
, которые пытаются принять количество клиентов внутри нее (я не закончил принимать все клины)
, поэтому будьте осторожны, где следует закрыть ваш Socket
У меня была такая же проблема, но запуск сервера перед запуском Client исправил его.
Один момент, который я хотел бы добавить к вышеприведенным ответам, - это мой опыт -
«Я размещал на своем сервере на 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 для этого)
Номер порта всегда отличается на обоих концах
Я хотел бы проверить:
. Простейшей отправной точкой является, вероятно, попытка подключения вручную с клиентской машины с помощью telnet или Putty. Если это удастся, проблема в коде клиента. Если это не так, вам нужно решить , почему это не так. Wireshark может помочь вам на этом фронте.
Возможно, что есть еще один экземпляр клиента, который все еще работает и прослушивает порт 5000.
BindException
, а не ConnectException
на клиенте.
– user207421
8 October 2015 в 12:11
У меня была такая же проблема с брокером Mqtt, что и vernemq.but, но он решил это, добавив следующее.
$ sudo vmq-admin listener show
, чтобы показать список o разрешены ips и порты для vernemq
$ sudo vmq-admin listener start port=1885 -a 0.0.0.0 --mountpoint /appname --nr_of_acceptors=10 --max_connections=20000
, чтобы добавить любой ip и ваш новый порт. теперь u должен иметь возможность подключаться без каких-либо проблем.
Надеюсь, мой опыт может быть полезен кому-то. Я столкнулся с проблемой с той же трассировкой стека исключений, и я не мог понять, в чем проблема. Сервер базы данных, который я пытался подключить, работал, и порт был открыт и принимал соединения.
Проблема была в подключении к Интернету. Подключение к Интернету, которое я использовал, не разрешалось подключаться к соответствующему серверу. Когда я изменил детали соединения, проблема была решена.
У меня была такая же проблема, и проблема заключалась в том, что я не закрывал объект сокета. После использования 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();
}
}
попробуйте отключиться от Интернета (вы можете отключить Wi-Fi).
В моем случае мне пришлось поставить галочку рядом с Expose daemon on tcp://localhost:2375 without TLS
в настройке docker
(в правой части панели задач щелкните правой кнопкой мыши по docker
, выберите setting
)
В моем случае я дал сокету имя сервера (в моем случае «raspberrypi»), а вместо этого адрес IPv4 сделал это или указал, что IPv6 был сломан (имя разрешено для IPv6)
You have not started your server
, но для меня это действительно проблема! – Alexis Leclerc 22 October 2014 в 17:19