【发布时间】:2014-05-21 11:56:37
【问题描述】:
我正在开发一个 Android 应用程序。有一个设备作为服务器。客户端设备可以连接到服务器设备。我想通过局域网来做。我不确定这是不是最好的方法,但我开始进行基于套接字的通信。
这是我的服务器线程:
@Override
public void run() {
Socket socket = null;
try {
serverSocket = new ServerSocket(7777);
while (!Thread.currentThread().isInterrupted()) {
try {
socket = serverSocket.accept();
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
我还有另一个线程用于通信......
现在,这是我的客户端线程:
public void run() {
try {
InetAddress serverAddress = InetAddress.getByName("10.0.2.2");
socket = new Socket(serverAddress, 7777);
writer = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())), true);
writer.println("Hello!");
writer.flush();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
问题是当客户端尝试连接到服务器时连接会超时。
编辑:权限:
<uses-permission
android:name="android.permission.INTERNET"/>
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/>
【问题讨论】:
-
你能通过 telnet 连接到 10.0.2.2:7777 吗?如果您知道 serverAddress IP,则不需要使用 get ByName()。您可以使用新的 Socket("10.0.2.2",7777) 进行连接。
-
我不能。我收到这条消息:“连接到 10.0.2.2...无法打开与主机的连接,在端口 7777:连接失败”
标签: java android sockets timeout serversocket