Я разрабатываю клиентское приложение для 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: Исправлена опечатка в примере кода
Вы рассказываете только о своем клиенте. Но есть и сервер. Расскажите, что вы видите на стороне сервера. – greenapps
Серверная сторона i не отвлекает входящий трафик от клиента. Thr, что я не могу понять, - это то, почему тот же код в среде JSE отлично работает, и в мобильной среде я так топаю –
Но вы видите, что клиент подключается? – greenapps