Удержать socket открытым с клиентской части

443
20 января 2017, 06:50

Есть вот такой код клиентской части:

Socket remoteServer;
remoteServer = new Socket("192.168.0.55",4445);
BufferedReader in  = new BufferedReader(new InputStreamReader(remoteServer.getInputStream()));
PrintWriter    out = new  PrintWriter(remoteServer.getOutputStream(),true);
BufferedReader ios = new BufferedReader(new InputStreamReader(System.in));
String fromClient,fromserver;
while ((fromClient = ios.readLine())!=null)
{
  out.println(fromClient);
  //out.write(fromClient);
  fromserver = in.readLine();
  System.out.println(fromserver);
  if (fromClient.equalsIgnoreCase("close")) break;
}
out.close();
in.close();
ios.close();
remoteServer.close();  

Т.е подключается к серверу и держит открытым соединение за счёт цикла, пока не придет "close". Но тут также держит и за счёт System.in, т.к данные получает с консоли. Но вот надо переделать под Андроид и проблема в том, что надо текст получать из editText, и вот на этом моменте застрял.

Если сделать вот так:

String fromClient = "Text",fromserver;
  out.println(fromClient);
  //out.write(fromClient);
  fromserver = in.readLine();
  System.out.println(fromserver);
  //if (fromClient.equalsIgnoreCase("close")) break;

То вроде как и работает, НО, соединение естественно после отправки закрывается, т.к нету цикла который бы держал открытым соединение. В общем как сделать что-бы по аналогии с первым куском кода, держалось открытым до получения "close"? Спасибо.

Answer 1

Когда я делал Socket-соединение, то всю работу сокета я перенес в Service, в котором чтение-запись были в отдельном потоке. Думаю, что это наиболее подходящий вариант.

READ ALSO
Иконки для уведомлений Notification.Builder

Иконки для уведомлений Notification.Builder

Подскажите, какого формата и какого размера должны быть иконки для методов setSmallIcon() и setLargeIcon() и где их можно скачать? Или есть ли в Android стандартные...

412
Не могу проверить по значению?

Не могу проверить по значению?

Всем привет ,хотел проверить наличие интернета вот таким способом

357
Ссылка с атрибутом target = '_blank'

Ссылка с атрибутом target = '_blank'

Нужно открывать ссылку в новой вкладке

330