Android TCP Client bliebt bei ReadLine und Read Stecken trotz "\r\n"

  • Antworten:6
MindCode
  • Forum-Beiträge: 4

30.06.2016, 17:46:07 via Website

Hallo,

ich verbinde mich mit einem Server. Der Server Sendet nach der Verbindung immer wieder einen String.
Er wird mit \r\n bzw \n abgeschlossen. Jedoch empfängt mein Adroidprgoramm gar nichts.
Weder mit readLine noch mit read.

    new Thread(new Runnable() {
@Override
public void run() {
    state = false;

    try {

        Log.v("[SOCKET]","Connecting" + msgGet);
        client = new Socket(HOSTNAME,SERVERPORT);
        Log.v("[SOCKET]","Bufferreader" + msgGet);
        tcpGet = new BufferedReader(new InputStreamReader(client.getInputStream()));
        Log.v("[SOCKET]","WAITING FOR LINE" + msgGet);

        buffer[] data = new buffer[32];
        // tcpGet.read(buffer);
        msgGet = tcpGet.readLine();
        tcpGet.close();
        Log.v("[SOCKET]","GET: " + msgGet);


        state = true;


    } catch (IOException e) {
        state = false;
        e.printStackTrace();
    }
    try {
        Thread.sleep(250);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

}).start();

Was kann das nur sein?
Ich hab mittlerweile schon echt viel rumprobiert.
Habe es auch mal in einer dauer Whileschleife gehabt.
NICHTS. Es komt einfach nichts an. Es bleibt hängen
bei read / readline und das wars!

Senden geht super! Empfangen nicht!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

30.06.2016, 20:34:50 via Website

Sicher dass der gegenspieler auch was sendet?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
MindCode
  • Forum-Beiträge: 4

30.06.2016, 21:03:16 via Website

Sicher dass der gegenspieler auch was sendet?

ja, über telnet sehe ich das empfangene

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

30.06.2016, 21:50:56 via App

Und eine Exception gibts auch nicht?
Komisch...

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
MindCode
  • Forum-Beiträge: 4

30.06.2016, 22:03:39 via Website

Nichts. Es hängt einfach an der stelle.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.07.2016, 06:39:18 via App

Hängen heißt er wartet auf ankommende Daten.Aber anscheinend kommt nichts an...
Kann dir da leider auch nicht helfen

Kannst mal nen TCP client laden und schauen was damit geht.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
swa00
  • Forum-Beiträge: 3.704

03.07.2016, 22:54:38 via Website

Hallo,

versuche es mal etwa so ..
(snipet aus meinem Client)

 @Override
    protected Void doInBackground(Void... arg0)
    {

        Socket socket = null;

        try {
            socket = new Socket(dstAddress, dstPort);

            ByteArrayOutputStream byteArrayOutputStream =
                    new ByteArrayOutputStream(1024);
            byte[] buffer = new byte[1024];

            int bytesRead;
            InputStream inputStream = socket.getInputStream();

            boolean connected = socket.isConnected() && !socket.isClosed();


            while ((bytesRead = inputStream.read(buffer)) != -1)
            {
                byteArrayOutputStream.write(buffer, 0, bytesRead);
                response += byteArrayOutputStream.toString("UTF-8");
            }

        } catch (UnknownHostException e)
        {

            e.printStackTrace();
            response = "UnknownHostException: " + e.toString();
        } catch (IOException e)
        {

            e.printStackTrace();
            response = "IOException: " + e.toString();
        }
        finally
        {
            if(socket != null)
            {
                try
                {
                    socket.close();
                } catch (IOException e)
                {

                    e.printStackTrace();
                }
            }
        }
        return null;
    }

— geändert am 04.07.2016, 10:20:22

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten