我正在尝试创建一个与正在运行的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;
}
}
答案 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
来使您的服务器在任何地址中侦听,但是客户端向该地址写入内容没有任何意义,您必须向客户端提供实际的地址。服务器的地址。