客户端一次又一次地发送相同的消息

时间:2014-02-12 15:21:27

标签: android

我正在开发适用于Android的客户端应用。当它通过套接字连接到服务器时,它会发送一条消息。问题是即使它是相同的,它仍然继续发送消息。

这是我到目前为止使用的代码。

public class ClientThread implements Runnable {

    public void run() {
        try {
            InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
            Log.d("ClientActivity", "C: Connecting...");
            socket = new Socket(serverAddr, SERVERPORT);
            connected = true;
            while (connected) {
                try {
                    Log.d("ClientActivity", "C: Sending command.");
                    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket
                                .getOutputStream())), true);
                        out.println(sendMsg.getText().toString());
                        out.flush();
                        Log.d("ClientActivity", "C: Sent.");

                } catch (Exception e) {
                    Log.e("ClientActivity", "S: Error!", e);
                }
            }
            //Log.d("ClientActivity", "C: Closed.");
        } catch (Exception e) {
            Log.e("ClientActivity", "C: Error", e);
            connected = false;
        }
    }
}

我尝试添加此if (out.toString()==sendMsg.getText().toString()){ connected=false; out.flush(); };,但结果仍然相同。 如果消息与前一个消息不同,我怎么能让它发送消息。

2 个答案:

答案 0 :(得分:1)

您需要将字符串与equals();

进行比较

使用==

更改equals();
if (out.toString().equals(sendMsg.getText().toString()))
{ 
connected=false; out.flush(); 

};

答案 1 :(得分:0)

你的while循环中有缺陷。

没有条件设置连接到false,所以它永远是一个。

出于好奇:你有没有理由进行套接字而不是http或https?