1
我正在開發一個Android應用程序。有一臺設備作爲服務器。客戶端設備可以連接到服務器設備。我想通過局域網來完成。我不確定這是最好的方式,但我開始做一個基於套接字的通信。客戶端無法連接到服務器套接字 - 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()。您可以連接新的套接字(「10.0.2.2」,7777)。 – SpeedEX505
我不行。我收到了以下消息:「正在連接到10.0.2.2 ...無法打開與主機的連接,端口7777:連接失敗」 – Lyra