我正在嘗試製作一個網絡應用程序,以進行概念驗證項目。 我需要保持連接打開,加入的客戶端,但我運行的while循環永遠不會退出第一個循環。 代碼:While循環和套接字
public class comm implements Runnable {
private Socket socket;
private String line, input;
boolean sending = true;
boolean connected = false;
private int me;
private BufferedReader br;
private PrintWriter pw;
doComms(Socket server) {
socket = server;
me = Main.connected;
}
public void run() {
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(socket.getOutputStream(), true);
while (true) {
System.out.println("Waiting");
readCommand();
}
} catch (Exception ex) {
System.out.println(ex);
}
}
private void readCommand() throws Exception {
String str;
while (br.readLine() != null) {
if (!connected) {
pw.println("connect");
}
str = br.readLine();
System.out.println(str);
if (str.startsWith("!START!")) {
System.out.println("User connected");
connected = true;
String[] split = str.split("#");
Main.jTable1.getModel().setValueAt(split[1], me, 2);
Main.jTable1.getModel().setValueAt(split[2], me, 3);
Main.jTable1.getModel().setValueAt("Connected...", me, 4);
}
}
}
}
開始的代碼是好的,它的作用是使一個新的線程爲每個連接的用戶,並在客戶端軟件運行正常了。我究竟做錯了什麼?
你寫的while run()方法while(true),這是不正確的。 – 2012-07-06 03:47:48
但是,我希望代碼循環,所以我可以在客戶端和服務器之間添加更多通信。 – user1497561 2012-07-06 03:49:18
第一個循環與'true'一樣嗎? – Chan 2012-07-06 03:52:37