Я программирую простое приложение-клиент-сервер сокета, устройство Android будет сервером, а ПК - клиентом.Подключитесь к устройству, которое подключается через usb debug, программирование сокетов
На стороне сервера, открыть сокет так:
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