У меня мало вопросов по поводу Socket Communication в Android.
1) Я разработал приложение для сокетов серверов для Android, которое прослушивает порт 8888.
a) Когда я размещаю свой сервер наэмулятор Я не могу связаться с ним через клиентское приложение, которое есть на моем ПК, поскольку оба приложения (эмулятор и клиент) находятся на моем ноутбуке и в одной сети, и я думаю, что они должны иметь возможность общаться друг с другом.
b) Когда я развертываю то же серверное приложение на моем мобильном устройстве Android и пытаюсь передать его через то же клиентское приложение, которое есть на моем ПК, клиентское приложение выдает исключение тайм-аута, так как оно не может связаться с ним.
Мой первый вопрос: как я могу протестировать приложение сокет сервер / клиент с помощью эмулятора и 1 устройства Android?Могу ли я даже использовать клиентское приложение сокета моего компьютера для проверки моего серверного сокета?
** У меня есть приложение клиентского сокета для другого моего приложения, поэтому проблем с клиентским приложением нет.
2) МойВторой вопрос заключается в том, чтобы проверить приложение моего сервера на устройстве Android. Нужно ли переадресовывать нужный порт?а) Для эмулятора: как я могу перенаправить порт?б) Для устройства: как я могу перенаправить порт?c) Могу ли я переадресовать порт программно?
** Только для информации:
Я использую Eclipse в качестве средства разработки Android.
** МОЙ серверный код, как можноТакже возникнут проблемы с кодом моего сокета сервера.
Socket socket = null;
DataInputStream dataInputStream = null;
DataOutputStream dataOutputStream = null;
ServerSocket serverSocket = null;
try
{
serverSocket = new ServerSocket(SERVERPORT);
System.out.println("Listening :" + SERVERPORT);
System.out.println("Server IP:" + SERVERIP);
}
catch (Exception e)
{
e.printStackTrace();
}
while(true)
{
try
{
socket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("ip: " + socket.getInetAddress());
String str = in.readLine();
System.out.println("message Received: " + str);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if( socket!= null)
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if( dataInputStream!= null)
{
try
{
dataInputStream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if( dataOutputStream!= null)
{
try
{
dataOutputStream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
Отредактировано: Очень интересная часть заключается в том, что если я установлю порт на 8080 Client Socket App на ПК, подключусь к приложению Android на моемAndroid-устройство, но я не получаю сокет на моем сервере, ни данные, которые я отправляю.Ничего не происходит после ссылки => socket = serversocket.accept ();
Также я установил разрешение в манифесте.