这是我在Android上的第一个应用程序,我正在尝试编写TCP客户端。
到目前为止,我有一个python TCP服务器,我用python TCP客户端测试它,它工作正常。
我从here获取了TCP客户端示例。
当我启动应用程序时,我可以在wireshark上看到握手,因此建立了连接。
现在,问题在于发送消息。当我把函数调用
if (mTcpClient != null)
{
mTcpClient.sendMessage("testing");
}
主要活动:
public void ChangeButtonState(View view)
{
boolean state = ((ToggleButton) view).isChecked();
if (state)
{
if (mTcpClient != null) {
mTcpClient.sendMessage("testing");
}
textView.setText("button is on. sent Tcp message. ");
textView.setVisibility(View.VISIBLE);
} else {
textView.setText("button is off");
}
}
代码在TcpClient类的行mBufferOut.println(message);
上崩溃。
但是如果我在TcpClient类中的行mBufferOut = new PrintWriter(socket.getOutputStream());
之后调用该函数,则客户端会传输消息,服务器会接收该消息并将其发送回客户端。
所以我的问题是为什么代码崩溃了? mTcpClient
成员不为空。
答案 0 :(得分:1)
您应该在后台线程中发送网络请求。使用AsyncTask
或Thread
。
new Thread(new Runnable(){
public void run(){
mTcpClient.sendMessage("test");
}
}).start();