?? 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 + -