2014-09-25 60 views
0

我使用TCP套接字与Android设备进行通信。我将网络数据包成功发送到服务器,但是当我尝试从服务器获得响应时,线程停止,我不知道原因。 Android客户端:安卓线程以未知原因停止

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()); 
     } 
    } 
} 

日志详细输出:

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

我不知道为什么它停止,当它来到这个行:

String inMsg = bufferedReader.readLine(); 

我用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(); 
     } 
    } 

回答

1

服务器用新行回答? “\ n”

public String readLine()在API级别1中添加返回此读取器提供的文本的下一行 。一行代表零或 更多字符,后跟'\ n','\ r','\ r \ n'或 阅读器的末尾。该字符串不包含换行符序列。

返回该行的内容,如果没有读取字符,则返回null 在读取器到达之前。

尝试:

String returningString = "Naber1\n"; 
+0

那你是什么意思?我需要发送一个响应消息,如“\ nNaber1”? – user1544101 2014-09-25 19:43:00

+0

@ user1544101,参见已编辑的答案 – user3439968 2014-09-25 19:44:53

+0

是的,他的工作,谢谢! – user1544101 2014-09-25 19:46:20