我有一个非常简单和基本的Java客户端/服务器程序。这很好用。但是,我现在正在尝试编写一个Android客户端,而我无法从我的Android客户端连接到服务器。我使用几乎完全相同的代码用于Android网络代码,因为我用于普通客户端。我的android代码很简单,它只是从onCreate:
启动这个线程private int serverPort = 8889;
private String serverIP = "192.168.5.230";
private Socket socket = null;
private Thread clientThread = new Thread("ClientThread") {
@Override
public void run() {
try {
socket = new Socket();
socket.connect(new InetSocketAddress(serverIP, serverPort), 1000);
DataInputStream din = new DataInputStream( socket.getInputStream());
DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
while (true) {
String message = din.readUTF();
setPicture("picture1");
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
端口是我的服务器运行的正确端口,ip地址(我从ifconfig获取,因为我知道你不能使用localhost)。当我使用相同的端口和IP地址运行我的普通PC客户端时,连接会通过。但是当我在我的Android设备上运行此代码时,当我尝试连接时套接字超时。
有没有人对我出错的地方有任何建议?
答案 0 :(得分:1)
仔细检查您是否在清单文件中添加了权限要求:
<uses-permission android:name="android.permission.INTERNET" />
但是,更重要的是,192.168.x.x是本地或不可路由的网络,因此您需要在同一网络上,或者知道如何到达192.168.5.230地址的网络。你说在你的设备上试用它时它不起作用 - 你在运行时运行本地wifi或者你在移动网络上运行吗?如果您使用手机,请尝试使用wifi。