Разъем выходного потока не смывает андроид

Я новичок в мире 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.

0 ответов

Другие вопросы по тегам