[英]Establishing a connection between Java server and client within Android appEDIT
我有一個Android的應用程序,我在其中創建了一個Android客戶端和一個Java服務器。
但是我遇到了以下問題:我的客戶端(android部分)使用android環回地址連接到端口6000上的本地機器。
我的服務器(用Java)在端口6000上偵聽本地機器 - 但是我必須使用什么IP來獲得接受客戶端的套接字?
InetSocketAddress serverAddr = new InetSocketAddress(SERVERIP,serverPort);
serverSocket = new ServerSocket();
serverSocket.bind(serverAddr);
那么我必須使用什么SERVERIP?
更新:我的客戶端在模擬器上運行!!!!!
編輯:
公共類ClientThread實現Runnable {Object syncToken;
public ClientThread(Object syncToken) {
this.syncToken = syncToken;
}
public void run() {
try {
InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
socket = new Socket(serverAddr, 50458);
} catch (UnknownHostException e) {
System.err.println("Don't know about host");
} catch (IOException e) {
System.err
.println("Couldn't get I/O for the connection to host");
}
try {
out = new PrintStream(socket.getOutputStream());
} catch (IOException e) {
System.out.println(e);
}
while (true) {
synchronized (syncToken) {
try {
syncToken.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
這里是:private String serverIpAddress =“10.0.2.2”; !!!!!
來自http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking :如果要從模擬器內部與本地主機進行通信,請在本地主機上使用IP 127.0.0.1
並使用IP 10.0.2.2
在Android中10.0.2.2
。 這應該允許您在Android客戶端和本地主機服務器之間進行通信。
您想在Android上運行服務器部分嗎? 我猜不是,在這種情況下使用環回地址並不真正起作用,因為Android系統上的環回接口循環回到Android機器本身,它不會路由到外部。
對於serverAddr,使用#InetSocketAddress(int port)
構造函數,它指定通配符地址和特定端口,這意味着它偵聽機器的所有接口。
編輯:為了獲得最佳效果,在Android設備上使用服務器的DNS名稱連接到它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.