感謝您花時間看我的小問題。Java套接字ServerSide輸入
我最近進入Java套接字並查找了一個簡單的教程,在這裏找到了一個多客戶端聊天應用程序http://cs.lmu.edu/~ray/notes/javanetexamples/它是頁面上的最後一個示例。
它工作正常,但我也想處理服務器端輸入,如斷開某些用戶每個命令或類似的東西,只是「聽」服務器控制檯中的用戶輸入,我似乎不能包住我的頭在這個特定的情況下。
try {
while (true) {
new Handler(listener.accept()).start();
}
}
,如果我只是檢查try塊會等待用戶輸入直到用戶連接>壞內部用戶輸入,我想保持服務器在他的正常循環,直到輸入的命令。
在這個簡單的例子中還有什麼辦法做到這一點嗎?還是需要像一個額外的線程來監聽用戶輸入,同時仍然循環處理器,如果是的話,我會怎麼做呢?
得到任何幫助=)
編輯: 解決使用不同的線程的問題: 首先一個添加一個新的類來處理新的線程來監聽新連接:
public class HandleClientsThread extends Thread{
private static int PORT;
public HandleClientsThread(int port) {
this.PORT = port;
}
public void run() {
try {
System.out.println("Handle Clients Thread Start");
ServerSocket listener = new ServerSocket(PORT);
try {
while (true) {
new Client(listener.accept()).start();
}
} finally {
listener.close();
}
} catch(IOException e) { }
}
}
然後我所需要做的主要服務器是啓動線程,讓它在後臺運行,而WA iting對用戶輸入:
public static void main(String[] args) throws Exception {
System.out.println("----- Server running on Port " + PORT + " -----");
new HandleClientsThread(PORT).start();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(true) {
String cmd = br.readLine();
switch (cmd) {
如果有人看到與此類似違規一些編程模式或壞的東西,在做的這樣,我將不勝感激它可能發生的任何問題=)
這應該可能是一個評論而不是答案。 – bhspencer
我試着用線程運氣,因爲我無法得到我的頭如何在while循環中中斷處理程序線程,而不檢查循環運行時不可能的用戶輸入。無論如何感謝=) – JasonBr