gpt4 book ai didi

java - 客户端关闭后保持套接字服务器打开

转载 作者:行者123 更新时间:2023-12-01 14:12:27 25 4
gpt4 key购买 nike

我已经实现了一个带有服务器和单个客户端的套接字。目前的结构方式是,只要客户端关闭,服务器就会关闭。我的意图是让服务器运行直到手动关闭。

这是服务器:

public static void main(字符串参数[]) { ;

    try
{
ServerSocket socket= new ServerSocket(17);

System.out.println("connect...");
Socket s = socket.accept();
System.out.println("Client Connected.");


while (true)
{

work with server

}

}
catch (IOException e)
{
e.getStackTrace();
}

我尝试用另一个 while(true) 循环包围整个 try/catch 循环,但它什么也没做,同样的问题仍然存在。关于如何保持服务器运行的任何想法?

最佳答案

看起来你的代码中会发生什么,你连接到客户端,无限循环与客户端的交互,然后当有人中断连接时(关闭清除,或粗鲁地中断它 - 例如,拔掉网络) cable)你将得到一个IOException,将你发送到catch子句,该子句运行然后继续(我猜“在那之后”是你的main()的结尾?)...

所以您需要做的是,从那时起,循环回到 accept() 调用,以便您可以接受另一个新的客户端连接。例如,这里有一些伪代码:

create server socket
while (1) {
try {
accept client connection
set up your I/O streams

while (1) {
interact with client until connection closes
}
} catch (...) {
handle errors
}
} // loop back to the accept call here

另外,请注意本例中 try-catch block 的位置,以便在接受循环中捕获和处理错误。这样,单个客户端连接上的错误会将您送回 accept() 而不是终止服务器。

关于java - 客户端关闭后保持套接字服务器打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20110487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com