Как я могу установить связь между устройством Android и сценарием Python? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь создать приложение для Android, которое взаимодействует с запущенным скриптом Python.Оба подключены к одной сети, и я хочу отправить текст между ними через сокеты.Я пытался сделать это с нескольких попыток, но ни одна из них не сработала.Это мой текущий код:

Python часть:

import socket
import time

#Defines Server Values
listensocket = socket.socket()
Port = 8000
maxConnections = 999
IP = socket.gethostname() #Gets Hostname Of Current Macheine

listensocket.bind(("0.0.0.0",Port))

#Opens Server
listensocket.listen(maxConnections)
print("Server started at " + IP + " on port " + str(Port))

#Accepts Incomming Connection
(clientsocket, address) = listensocket.accept()
print("New connection made!")

running = True

#Main
while running:
    message = clientsocket.recv(1024).decode() #Receives Message
    if not message == "":
        print(message)
    # closes Server If Message Is Nothing (Client Terminated)
    else:
        clientsocket.close()
        running = False

Android часть:

class send extends AsyncTask<Void,Void,Void> {
    Socket s;
    PrintWriter pw;
    @Override
    protected Void doInBackground(Void...params){
        try {
            s = new Socket("0.0.0.0",8000);
            pw = new PrintWriter(s.getOutputStream());
            pw.write(message);
            pw.flush();
            pw.close();
            s.close();
        } catch (UnknownHostException e) {
            System.out.println("Fail");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("Fail");
            e.printStackTrace();
        }
        return null;
    }
}

1 Ответ

2 голосов
/ 15 апреля 2019

С как получить :

0.0.0.0 - это не маршрутизируемый мета-адрес, используемый для обозначения недопустимого, неизвестного или неприменимого целевого объекта (a 'без конкретного адреса 'заполнитель).

В контексте серверов 0.0.0.0 означает все адреса IPv4 на локальном компьютере.Если хост имеет два IP-адреса, 192.168.1.1 и 10.1.2.1, и сервер, работающий на хосте, прослушивает 0.0.0.0, он будет доступен на обоих этих IP-адресах.

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

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