发送TCP数据包时程序崩溃

时间:2017-10-11 13:04:03

标签: java android tcp

这是我在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成员不为空。

1 个答案:

答案 0 :(得分:1)

您应该在后台线程中发送网络请求。使用AsyncTaskThread

new Thread(new Runnable(){
    public void run(){
        mTcpClient.sendMessage("test");
    }
}).start();