📄 gobangserver.java
字号:
package com.j2medev.chapter5;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class GoBangServer implements Runnable{
private Thread thread = null;
private ServerSocket server = null;
//GameEngine管理两个客户端会话
private boolean stop = false;
public static List rooms = new ArrayList();
public static final int MAX_ROOM = 10;
public static void main(String[] args){
new GoBangServer();
}
public GoBangServer() {
if(thread == null){
try {
//创建服务器,在2200端口监听客户端连接
server = new ServerSocket(2200);
for(int i = 0;i<MAX_ROOM;i++){
//初始化MAX_ROOM个游戏房间
rooms.add(new GoBangRoom());
}
thread = new Thread(this);
thread.start();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
private Room getAvailableRoom(){
for(int i = 0;i<rooms.size();i++){
Room r = (Room)rooms.get(i);
if(r.canJoin()){
//返回可加入的游戏房间
return r;
}
}
//无可用房间
return null;
}
public void run(){
while(!stop){
try{
Socket socket = server.accept();
Room room = getAvailableRoom();
if(room != null){
room.addPlayer(new Session(socket));
}else{
//无可用房间,未处理
System.out.println("You can not join");
}
}catch(IOException ex){
ex.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -