Java 在多个服务器端口上侦听客户端尝试连接
Java listening on multiple server ports for client attempt to connect
好的。我觉得很蠢。我找不到我要找的东西。
我正在打开 50 个 ServerSockets 并将它们添加到 ServerSockets 列表中:
ServerSocket ss = new ServerSocket(getPortNumber());
SOCKETS.add(ss);
我知道每个连接都需要一个新线程:
new Thread() {
public void run() {
ServerSocket ss = new ServerSocket(getPortNumber());
while(true) {
Socket client = ss.accept();
//handle client
}
}.start();
所以,我的问题是,"Do I have to use a while loop until I get a connection?"
我的意思是,有没有办法在使用 ss.accept 分配 Socket 客户端之前监听连接尝试?
Do I have to use a while loop until I get a connection?
视情况而定。如果您只需要一个连接,则不需要 while 循环:否则,您需要。
I mean, is there a way to listen for an attempt to connect before using the ss.accept to assign Socket client?
这个问题没有意义。这就是 accept()
所做的。
NB 创建 ServerSocket
已经将端口置于可以连接的侦听状态。但它是 accept()
接受连接,没有别的。
您正在创建 50 个侦听端口这一事实已经表明存在严重的设计问题。你只需要一个。不要浪费系统资源。
这听起来像是一个 XY 问题。
我们决定(在我们的例子中)最好为每个客户端配备一个专用的服务器套接字。因此,我正在关注这个 SO 问题的答案:
Server Listening on Multiple Ports [Java]
好的。我觉得很蠢。我找不到我要找的东西。
我正在打开 50 个 ServerSockets 并将它们添加到 ServerSockets 列表中:
ServerSocket ss = new ServerSocket(getPortNumber());
SOCKETS.add(ss);
我知道每个连接都需要一个新线程:
new Thread() {
public void run() {
ServerSocket ss = new ServerSocket(getPortNumber());
while(true) {
Socket client = ss.accept();
//handle client
}
}.start();
所以,我的问题是,"Do I have to use a while loop until I get a connection?"
我的意思是,有没有办法在使用 ss.accept 分配 Socket 客户端之前监听连接尝试?
Do I have to use a while loop until I get a connection?
视情况而定。如果您只需要一个连接,则不需要 while 循环:否则,您需要。
I mean, is there a way to listen for an attempt to connect before using the ss.accept to assign Socket client?
这个问题没有意义。这就是 accept()
所做的。
NB 创建 ServerSocket
已经将端口置于可以连接的侦听状态。但它是 accept()
接受连接,没有别的。
您正在创建 50 个侦听端口这一事实已经表明存在严重的设计问题。你只需要一个。不要浪费系统资源。
这听起来像是一个 XY 问题。
我们决定(在我们的例子中)最好为每个客户端配备一个专用的服务器套接字。因此,我正在关注这个 SO 问题的答案:
Server Listening on Multiple Ports [Java]