0
我正在編程一個簡單的套接字客戶端 - 服務器應用程序,android設備將是服務器,PC是客戶端。連接到通過USB調試插座的設備,套接字編程
在服務器端,打開插座這樣的:
Socket s = null;
try {
mServerSocket = new ServerSocket(6000);
Log.e("tag", getLocalIpAddress());
} catch (IOException e) {
e.printStackTrace();
}
while (true) {
Message m = new Message();
m.what = MSG_ID;
try {
if (s == null)
s = mServerSocket.accept();
BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
String st = null;
st = input.readLine();
mClientMsg = st;
myUpdateHandler.sendMessage(m);
} catch (IOException e) {
e.printStackTrace();
}
}
和客戶端:
Socket socket;
try {
InetAddress serverAddr = InetAddress.getByName("10.0.2.2");
socket = new Socket(serverAddr, 6000);
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println("Hello server");
System.out.println("Sent message to server");
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
運行服務器後,我已經運行在客戶端,它的送花兒給人表明
> java.net.ConnectException: Connection timed out: connect
at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at main.main(main.java:19)
看起來像客戶端的IP地址不正確。但我不知道服務器的ip地址是什麼!
注:我使用一個真正的設備,通過USB調試連接。
謝謝。
USB與插座有什麼關係?無論IP是什麼,它都不存在/有通往它的路線。 –
就像使用模擬器一樣,我可以使用10.0.2.2,但是在真實的設備上使用usb連接,10.0.2.2不起作用。 –
這個項目使用USB和adb來使用插座 https://github.com/quamotion/madb – esdebon