如何在android设备和python脚本之间建立通信?

时间:2019-04-15 20:33:54

标签: android python sockets

我正在尝试创建一个与正在运行的python脚本通信的android应用。两者都连接到同一网络,我想通过套接字在它们之间发送一些文本。我尝试过多次尝试,但是没有一个起作用。这是我当前的代码:

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 个答案:

答案 0 :(得分:2)

来自how to geek

  

0.0.0.0是不可路由的元地址,用于指定无效,未知或不适用的目标(“无特定地址”占位符)。

     

在服务器的上下文中,0.0.0.0表示本地计算机上的所有IPv4地址。如果主机有两个IP地址192.168.1.1和10.1.2.1,并且主机上运行的服务器侦听0.0.0.0,则这两个IP都可以访问。

简短的回答是,您可以在服务器端使用0.0.0.0来使您的服务器在任何地址中侦听,但是客户端向该地址写入内容没有任何意义,您必须向客户端提供实际的地址。服务器的地址。