2015-02-20 3 views
0

Я разрабатываю клиентское приложение для Android, которое ведет переговоры с сервером через простой TCP-сокет, предположим, что сервер ip 192.168.1.2 и устройство androdi ip составляют 192.168.1.3.Сокет для Android подключен, но не отправляет данные

Я открываю сокет, я проверяю, подключен ли сокет (я вернусь как результат), и после этого напишу презентационное сообщение.

Вот мой код

// scoket setup 
Sockets = new Socket(addressToConnect, 2015); 
s.setSoTimeout(2500); 
setTcpNoDelay(true); 

// if i'm connected 
if (s.isConnected()) { 
    // wrapping streams 
    DataInputStream dis = new DataInputStream(s.getInputStream()); 
    DataOutputStream dos = new DataOutputStream(s.getOutputStream()); 

    // sending data 
    String presentationMessage = "Presentation message content--- TERM"; 
    dos.write(presentationMessage.getBytes("UTF-8"); 
    dos.flush(); 

    // buffers 
    byte[] readBuffer = new byte[4096]; 
    StringBuffer responseBuffer = new StringBuffer(); 

    // read data until command terminator string is found 
    boolean readResponse = true; 
    while (readResponse) { 
     int dataBufferLength = dis.read(readBuffer); 
     String chunk = new String(readBuffer, 0, dataBufferLength, "UTF-8")); 
     responseBuffer.append(chunk); 
     readResponse = ! chunk.endWith("--- TERM"); 
    } 

    // Process data here 
} else { 
    // Notify missing connection here 
} 
// here i close the socket 

Когда я исполняю этот код выполнение кажется работает как шарм до первого чтения какой timesout.

Обнаружив используемую сеть WIFI с третьей машиной, я не могу видеть установление соединения и записанный поток, даже если код не генерирует никаких исключений до таймаута чтения.

Я предоставил android.permission.INTERNET в манифесте.

Существуют ли другие разрешения для предоставления? или что я делаю неправильно?

Выполнение того же кода в стандартной среде Java SE все идет хорошо.

Я тестирую код на Nexus 5, Nexus 9 и Samsung S3 и S4 и проект совместим с API 14+

Edit: Исправлена ​​опечатка в примере кода

+0

Вы рассказываете только о своем клиенте. Но есть и сервер. Расскажите, что вы видите на стороне сервера. – greenapps

+0

Серверная сторона i не отвлекает входящий трафик от клиента. Thr, что я не могу понять, - это то, почему тот же код в среде JSE отлично работает, и в мобильной среде я так топаю –

+0

Но вы видите, что клиент подключается? – greenapps

ответ

0

Вы читаете из доски и письма к этому. Вы должны отменить это.

+0

Извините, что это опечатка –

+0

. Ваше извините не принято. Вы не должны вводить здесь свой код, а используйте только копию и вставку. Теперь сначала скопируйте/вставьте правильный код. – greenapps

+0

Я не могу опубликовать спецификации протокола клиента и данные о сети клиента. –