套接字将java(android)写入python
我想创建一个超级基本的Android应用程序,它可以连接到在我电脑上运行的python服务器,但python服务器永远无法连接 我的java代码:套接字将java(android)写入python,java,android,python,sockets,Java,Android,Python,Sockets,我想创建一个超级基本的Android应用程序,它可以连接到在我电脑上运行的python服务器,但python服务器永远无法连接 我的java代码: public class WriteToSocket { Socket sock; public void Test() { try { this.sock = new Socket("PCName", 9871); } catch (UnknownHostException e) { System
public class WriteToSocket {
Socket sock;
public void Test() {
try {
this.sock = new Socket("PCName", 9871);
} catch (UnknownHostException e) {
System.out.println("Unknown host: PCName");
System.exit(1);
} catch (IOException e) {
System.out.println("No I/O");
System.exit(1);
}
}
public void Test1(){
try {
this.sock.close();
} catch (IOException e) {
System.out.println("No I/O");
System.exit(1);
}
}
及
我的python服务器是
import socket
sock = socket.socket()
name = "PCName"
port = 9871
sock.bind((name,port))
sock.listen(1)
s,a = sock.accept()
我希望在python服务器点击按钮接受连接后,我也尝试将PCName更改为127.0.0.1
我环顾四周,但到目前为止没有任何帮助:Sandroid手机不知道PCName是什么,将python代码中的PCName更改回“127.0.0.1”,然后在android项目中输入服务器的本地IP地址
当然,这是假设手机和服务器都在同一个本地网络上。将服务器套接字绑定到可以从android访问的PC的IP地址之一,而不是127.0.0.1。或者将其绑定到所有可用接口0.0.0.0 然后从android连接到该IP 例如,如果您的电脑具有IP地址1.2.3.4,则在两种应用程序中都使用此IP 使用netstat查看您的电脑上的端口是否真正打开 检查您的android应用程序是否具有使用清单中指定的internet的权限:USES_internet或类似的东西
此外,python脚本在建立连接后会立即丢弃连接。在python中将绑定地址更改为0.0.0.0。它将绑定连接到您机器的所有IP。然后在android应用程序中更改为正确的计算机IP
IP 127.0.0.1是一个,您无法从系统外部连接到它。我将java更改为this.sock=new Socket10.0.0.59871;python扩展到127.0.0.1,但仍然不能在同一个网络上工作。嗯,是否捕获了任何异常?如果没有,您确定没有进行连接吗?您可以尝试在python代码printReceived连接中的sock.accept之后添加它,该连接来自%s%a事实上,现在我查看了仿真器,发现了一个异常,但我不知道如何知道是哪个异常,因为它正在仿真器上运行:s绑定到python端的本地环回地址时,您将永远无法从android连接。@Hyperboreus我已将本地环回更改为0.0.0.0,现在的问题是android应用程序捕捉到异常,但这并没有发生,其全部目的是确保我可以连接两个设备。您是否检查了上述步骤?我检查了,在再次查看android应用程序后,发现了一个异常,但我不知道如何知道是哪个异常,因为它在模拟器上运行。这与在模拟器上运行它有什么关系?检查模拟器的标准输出。或者使用Toast而不是System.out.println。或者登录到logcat并查看它。或者使用调试器…@Shay您是否在清单中指定了网络访问权限?
import socket
sock = socket.socket()
name = "PCName"
port = 9871
sock.bind((name,port))
sock.listen(1)
s,a = sock.accept()