Я думаю, что это также может произойти, если вы пытаетесь показать диалог из потока, который не является основным потоком пользовательского интерфейса.
Используйте runOnUiThread()
в этом случае.
Вы уверены, что проблема не на стороне сервера? Используете ли вы какой-либо метод для чтения, который ожидает строку или что-то, заканчивающееся на "\ n"?
С учетом буферизации в предыдущих сообщениях для решения вопроса о том, являются ли данные при отправке рассмотрите возможность захвата данных в строке, используя что-то вроде wirehark . Если данные, которые вы отправляете, видны в строке, значит, сервер их не получает.
В противном случае, если данные не поступают в линию, TCP может удерживать данные, чтобы избежать отправки одного сегмента только с несколько байтов в нем ( см. Алгоритм Нэгла ). В зависимости от вашей ОС или поставщика TCP у вас может быть разное поведение, но большинство стеков TCP поддерживают параметр TCP_NODELAY, который может помочь получить данные более своевременно.
tcp_client.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
Это может помочь в отладке, но обычно не должно '
Попробуйте явную очистку:
tcp_client = TCPSocket.new( ipaddr, port )
tcp_client.write( 'Z' )
tcp_client.send( 'Z' )
tcp_client.flush
Таким образом, вывод буферизируется максимум только до момента, когда вы решите, что он должен быть отправлен.