Ошибка отправки сокета [WinError 10061] Невозможно установить соединение, поскольку целевая машина активно отклонила его для Socket с Python на Android - PullRequest
0 голосов
/ 22 марта 2019

Я отправляю сокет из скрипта Python на мой телефон Android и наоборот.Когда мой android отправляет пакет в мой скрипт python, он работает, но при отправке пакетов из сценария python в android выдается следующее сообщение:

Error sending socket  [WinError 10061] 
No connection could be made because the target machine actively refused it

Примечание. При отправке из android в python функция использует другой сокет и другой порт.,Ошибка происходит здесь s.connect((host, port)) Вот мой код Python для отправки пакета:

try:
    s = socket.socket()
    host = "ip_address_of_android"
    port = 7801
    s.connect((host, port))
    print("connected")
    s.listen(5)
    print("sending")
    text = "hello"
    s.sendall(text.encode())
    s.close()
except Exception as e:
    print("Error sending socket ", e)

А вот мой код Android-студии для получения пакета:

public String receives() {
    Socket socket;
    DataInputStream ds;
    try {
        socket = new Socket("ip_address_of_android", 7801);
        ds = new DataInputStream(socket.getInputStream());
        boolean done = false;
        while (!done) {
            result = ds.readUTF();
        }
    } catch (Exception e) {
        System.out.print("error");
    }
    return result;
}

Я предполагаюЭто ошибка брандмауэра Android, но я не знаю, как это исправить.Заранее спасибо.

1 Ответ

0 голосов
/ 22 марта 2019
  • Это не ошибка брандмауэра Android.
  • Ваш код бессмысленно смешал логику клиента и сервера.
  • Сервер (Android) должен listen() и accept().
  • Клиент (Python) должен connect(). Это не должно listen().

«Целевая машина активно отказалась от него» означает, что клиент успешно достиг сетевого интерфейса сервера, но ОС сервера сказала: «Ни у кого нет открытого порта 7801, поэтому мне не к чему вас подключить». Сторона Android никогда не открывала 7801, потому что она никогда listen() -ed.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...