【发布时间】:2016-02-08 15:18:30
【问题描述】:
我有两个 java 类,一个用于服务器,一个用于客户端。使用常规套接字在它们之间建立连接。如何允许客户端类的多个实例使用多线程同时连接到服务器? 我尝试在 SO 上进行搜索,但我真的找不到任何简明/清晰的答案。
这是我的重要方法(它们都在Server类中):
public void startRunning() {
try {
server = new ServerSocket(portNum, 10); // port num and backlog
while (true) {
try {
waitForConnection();
setupStreams(); //sets up streams
whileChatting(); //exchanges messages
} catch (EOFException e1) {
showMessage("\n Server ended the connection");
} finally {
closeEverything(); //closes all streams
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private void waitForConnection() throws IOException {
showMessage(" Waiting for connections...\n");
connection = server.accept();
showMessage(" Connected to "
+ connection.getInetAddress().getHostName());
}
【问题讨论】:
-
一种“传统”方法是在服务器上为每个客户端生成一个新线程;使用ServerSocket。根据您的应用程序,您可能可以使用Selector 来减少所需的线程数。网上有很多例子。但是,您的问题对于本网站的格式来说太宽泛了。请就您编写的某些代码提出具体问题。
标签: java multithreading sockets server client