我正在开发适用于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();
};
,但结果仍然相同。
如果消息与前一个消息不同,我怎么能让它发送消息。
答案 0 :(得分:1)
您需要将字符串与equals();
使用==
equals();
if (out.toString().equals(sendMsg.getText().toString()))
{
connected=false; out.flush();
};
答案 1 :(得分:0)
你的while循环中有缺陷。
没有条件设置连接到false,所以它永远是一个。
出于好奇:你有没有理由进行套接字而不是http或https?