【发布时间】:2013-12-31 15:28:57
【问题描述】:
我正在尝试添加一个重启服务器功能,该功能会弹出所有玩家和线程,然后为新玩家启动一个新的服务器套接字。这是我尝试过的方法,但是当我重新启动时,尝试添加更多他们没有连接的玩家?
任何帮助都会很棒,谢谢。或者,有没有办法在不关闭套接字的情况下从服务器弹出所有连接?
private volatile ServerSocket ss;
private Socket p1;
private Socket p2;
private GameSession ses;
private ObjectOutputStream top1;
private ObjectOutputStream top2;
public void connectToClient() {
try {
ss = new ServerSocket(8000);
while (true) {
p1 = ss.accept();
top1 = new ObjectOutputStream(p1.getOutputStream());
p2 = ss.accept();
top2 = new ObjectOutputStream(p2.getOutputStream());
see = new GameSession(p1, p2, top1, top2);
new Thread(see).start();
}
} catch (IOException ex) {
System.err.println(ex);
}
}
private void restartServer() {
if (ss.isBound()) {
try {
ss.close();
ss = new ServerSocket(8000);
displayLog.append(new Date() + ": Server started at socket "
+ ss.getLocalPort() + '\n');
} catch (IOException ex) {
System.err.println(ex);
}
}
}
【问题讨论】:
-
你在播放器端做什么?我会考虑发送一条消息说您正在关闭并重新启动,以便玩家可以做一些有用的事情,例如尝试再次连接。
标签: java sockets networking serversocket