Разъем выходного потока не смывает андроид
Я новичок в мире Android, и я пытаюсь сделать простое приложение для чата на сокете tcp сервер / клиент. Я использую витой (Python) для сервера. Вот исходный код:
from twisted.internet import reactor, protocol, endpoints
from twisted.protocols import basic
from twisted.internet.address import IPv4Address
import threading
import datetime, time
# Broadcast to all clients
def broadcast(clients, text):
for c in clients:
try:
c.sendLine(text)
except Exception:
print '[!] Cannot send message to' + c.getIp()
# SocketServer class
class PubProtocol(basic.LineReceiver):
def __init__(self, factory):
self.factory = factory
def connectionMade(self):
ip = self.transport.getHost().host
print "[+] Client {} connected".format(ip)
self.factory.clients.add(self)
def connectionLost(self, reason):
self.factory.clients.remove(self)
print '[+] Client disconnected'
def lineReceived(self, line):
# Get IP
ip = self.transport.getHost().host
# Get current time
time = datetime.datetime.now().strftime("%H:%M:%S")
# Build message to send
text = "[{}] {}: {}".format(time, ip, line)
# Print text to server
print text
# Broadcast to all clients
broadcast(self.factory.clients, text)
class PubFactory(protocol.Factory):
def __init__(self):
self.clients = set()
def buildProtocol(self, addr):
return PubProtocol(self)
print '[+] Server started'
endpoints.serverFromString(reactor, "tcp:1025").listen(PubFactory())
reactor.run()
Я проверил это с помощью telnet, и все, что я пишу в своем терминале telnet, отображается в консоли сервера, а также отправляется обратно клиенту.
Все хорошо, пока я не начал кодировать клиент, отправляющий часть сообщения в Java. Вот моя функция sendMessage:
private void sendMessage(String text) throws IOException {
Log.d("ME", "In message function");
if (!goodToGo) {
Log.d("ME", "In: goodToGo = false");
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Not connected to server.");
builder.setTitle("Error");
builder.show();
return;
}
OutputStream outputStream = socket.getOutputStream();
PrintWriter out = new PrintWriter(outputStream);
out.print(text);
out.print("");
out.flush();
Log.d("ME", String.format("after message %s sent", text));
}
Я вызываю эту функцию только после подключения к серверу (уверен на 100%!)
Проблема в том, что после отправки сообщения я ничего не получаю в консоли своего сервера, хотя logcat показывает мне "после сообщения отправлено some_message". Я пробовал разные способы отправки сообщения, но все равно сервер не печатал ни одного сообщения. Я также пытался отправить \ n, но результаты те же. Сервер не может быть проблемой, так как он работает с telnet, а также с nc.