我正在開發適用於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(); };
但結果仍然是一樣的。 如何才能讓它發送消息只有當它不同於以前的。
不,我剛開始學習套接字。 我有條件,但它不能正常工作。 – WWJD
如果我可能會給你一些建議:除非你真的需要知道套接字,否則你不需要知道套接字的任何內容。無論你想要完成什麼,你都應該可以使用http或https連接。 Android爲這種通信提供了TON類。如果你在同一時間建立服務器,那麼你可以輕鬆地支持這些連接,安全性大約高出十億倍。 – cbrulak
感謝您的建議。我將檢查http/https連接。只是爲了完成這個項目。 – WWJD