-1
我已經實現了一個小型Java聊天室程序,客戶端可以與服務器通信。儘管多個客戶端無法工作 - 我相信這是因爲客戶端在連接時預留了套接字?有沒有簡單的方法來添加多個客戶端功能?謝謝你的幫助。與多個客戶端通信 - Java服務器
public void startRunning(){
try{
server = new ServerSocket(6789, 100); // port no, max users
while(true){
try{
waitForConnection();
setupStreams();
connectionRecieving();
}catch(EOFException eofException){
showMessage("Server ended connection \n");
}finally{
closeConnection();
}
}
}catch(IOException ioException){
ioException.printStackTrace();
}
}
// Wait for connection
private void waitForConnection() throws IOException{
showMessage("Attempting connection... \n");
connection = server.accept();
showMessage("Connected to: " + connection.getInetAddress().getHostName() + "\n");
}
// Get stream to send and receive data
private void setupStreams() throws IOException{
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());
}
// Close streams and sockets
private void closeConnection(){
showMessage("----- \nClosing connections... \n");
try{
output.close();
input.close();
connection.close();
}catch(IOException ioException){
ioException.printStackTrace();
}
}
問題是每個連接會覆蓋前一個連接。您需要有多個連接字段和多個輸入/輸出流。真的需要產生一個線程來處理連接,並且_it_可以維護連接和流。 – Gray 2013-02-14 19:29:07
http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html - 請參閱本教程的最後一節,它有一個完整的工作示例,說明如何支持多個客戶端。 – 2013-02-14 19:42:14