user1544101
user1544101

Reputation: 57

android thread stops with unknown cause

I'm communicating Android Device - PC with TCP Sockets. I sent network packets to the server succesfully but when I try to get response from the server, The thread stops I don't know cause. Android Client :

public class ClientThread implements Runnable 
{
    public void run() 
    {
        try 
        {
                Socket socket = new Socket("192.168.1.12", 4444);

                BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                out.write(msg);
                out.flush();

                Log.v("Naber", "One");

                InputStreamReader inputStreamReader = new InputStreamReader(socket.getInputStream());
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // get the client message
                String inMsg = bufferedReader.readLine();
                inputStreamReader.close();
                Log.v("Naber", "Two");
                socket.close();

        }
        catch (Exception e)
        {
            Log.v("Hata", e.getMessage());
        }
    }
}

Log Verbose Output :

09-25 22:25:37.163  15351-15532/com.mytracia.kumanda9 V/Naber﹕ One

I don't know why does it stops when it came to this line :

String inMsg = bufferedReader.readLine();

My Server Application with C#

static void Main(string[] args)
    {
        TcpListener tcpListener = new TcpListener(IPAddress.Any, 4444);
        while (true)
        {
            tcpListener.Start();
            //Program blocks on Accept() until a client connects.
            Socket soTcp = tcpListener.AcceptSocket();
            Byte[] received = new Byte[1024];
            int bytesReceived = soTcp.Receive(received, received.Length, 0);
            String dataReceived = System.Text.Encoding.ASCII.GetString(received);
            dataReceived = dataReceived.Replace("\0", "");
            Console.WriteLine(dataReceived);
            String returningString = "Naber1";
            Byte[] returningByte = System.Text.Encoding.ASCII.GetBytes(returningString.ToCharArray());
            //Returning a confirmation string back to the client.
            soTcp.Send(returningByte, returningByte.Length, 0);
            tcpListener.Stop();
        }
    }

Upvotes: 0

Views: 48

Answers (1)

user3439968
user3439968

Reputation: 3538

Server answer with new line? "\n"

public String readLine () Added in API level 1 Returns the next line of text available from this reader. A line is represented by zero or more characters followed by '\n', '\r', "\r\n" or the end of the reader. The string does not include the newline sequence.

Returns the contents of the line or null if no characters were read before the end of the reader has been reached.

Try:

String returningString = "Naber1\n";

Upvotes: 1

Related Questions