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();
}
}
那你是什么意思?我需要发送一个响应消息,如“\ nNaber1”? – user1544101 2014-09-25 19:43:00
@ user1544101,参见已编辑的答案 – user3439968 2014-09-25 19:44:53
是的,他的工作,谢谢! – user1544101 2014-09-25 19:46:20