亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? omokserver.java

?? Java五子棋游戲設計
?? JAVA
字號:
import java.net.*;
import java.io.*;
import java.util.*;
public class OmokServer{
  private ServerSocket server;
  private BManager bMan=new BManager();
  private Random rnd= new Random();
  public OmokServer(){}
  void startServer(){
    try{
      server=new ServerSocket(7777);
      System.out.println("服務器套接字已被創建.");
      while(true){
        Socket socket=server.accept();
        Omok_Thread ot=new Omok_Thread(socket);
        ot.start();
        bMan.add(ot);
        System.out.println("連接數: "+bMan.size());
      }
    }catch(Exception e){
      System.out.println(e); 
    }
  }
  public static void main(String[] args){
    OmokServer server=new OmokServer();
    server.startServer();
  }
  class Omok_Thread extends Thread{
    private int roomNumber=-1;
    private String userName=null;
    private Socket socket;
    private boolean ready=false;
    private BufferedReader reader;
    private PrintWriter writer;
    Omok_Thread(Socket socket){
      this.socket=socket;
    }
    Socket getSocket(){
      return socket; 
    }
    int getRoomNumber(){
      return roomNumber;
    }
    String getUserName(){
      return userName;
    }
    boolean isReady(){
      return ready; 
    }
    public void run(){
      try{
        reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        writer=new PrintWriter(socket.getOutputStream(), true);
        String msg;
        while((msg=reader.readLine())!=null){
          if(msg.startsWith("[NAME]")){
            userName=msg.substring(6);
          }   
          else if(msg.startsWith("[ROOM]")){
            int roomNum=Integer.parseInt(msg.substring(6));
            if( !bMan.isFull(roomNum)){
              if(roomNumber!=-1)
                bMan.sendToOthers(this, "[EXIT]"+userName);
              roomNumber=roomNum;
              writer.println(msg);
              writer.println(bMan.getNamesInRoom(roomNumber));
              bMan.sendToOthers(this, "[ENTER]"+userName);
            }    
            else writer.println("[FULL]");
          }
          else if(roomNumber>=1 && msg.startsWith("[STONE]"))
            bMan.sendToOthers(this, msg);
          else if(msg.startsWith("[MSG]"))
            bMan.sendToRoom(roomNumber, "["+userName+"]: "+msg.substring(5));
          else if(msg.startsWith("[START]")){
            ready=true;
            if(bMan.isReady(roomNumber)){
              int a=rnd.nextInt(2);
              if(a==0){
                writer.println("[COLOR]BLACK");
                bMan.sendToOthers(this, "[COLOR]WHITE");
              }  
              else{
                writer.println("[COLOR]WHITE");
                bMan.sendToOthers(this, "[COLOR]BLACK");
              }
            }  
          }
          else if(msg.startsWith("[STOPGAME]"))
            ready=false;
          else if(msg.startsWith("[DROPGAME]")){
            ready=false;
            bMan.sendToOthers(this, "[DROPGAME]");
          }
          else if(msg.startsWith("[WIN]")){
            ready=false;
            writer.println("[WIN]");
            bMan.sendToOthers(this, "[LOSE]");
          }
        }
      }catch(Exception e){
      }finally{
        try{
          bMan.remove(this);
          if(reader!=null) reader.close();
          if(writer!=null) writer.close();
          if(socket!=null) socket.close();
          reader=null; writer=null; socket=null;
          System.out.println(userName+"已斷線.");
          System.out.println("連接人數: "+bMan.size());
          bMan.sendToRoom(roomNumber,"[DISCONNECT]"+userName);
        }catch(Exception e){}
      }
    }
  }
  class BManager extends Vector{
    BManager(){}
    void add(Omok_Thread ot){
      super.add(ot);
    }
    void remove(Omok_Thread ot){
       super.remove(ot);
    }
    Omok_Thread getOT(int i){
      return (Omok_Thread)elementAt(i);
    }
    Socket getSocket(int i){
      return getOT(i).getSocket();
    }
    void sendTo(int i, String msg){
      try{
        PrintWriter pw= new PrintWriter(getSocket(i).getOutputStream(), true);
        pw.println(msg);
      }catch(Exception e){}  
    }
    int getRoomNumber(int i){
      return getOT(i).getRoomNumber();
    }
    synchronized boolean isFull(int roomNum){
      if(roomNum==0)return false;
      int count=0;
      for(int i=0;i<size();i++)
        if(roomNum==getRoomNumber(i))count++;
      if(count>=2)return true;
      return false;
    }
    void sendToRoom(int roomNum, String msg){
      for(int i=0;i<size();i++)
        if(roomNum==getRoomNumber(i))
          sendTo(i, msg);
    }
    void sendToOthers(Omok_Thread ot, String msg){
      for(int i=0;i<size();i++)
        if(getRoomNumber(i)==ot.getRoomNumber() && getOT(i)!=ot)
          sendTo(i, msg);
    }
    synchronized boolean isReady(int roomNum){
      int count=0;
      for(int i=0;i<size();i++)
        if(roomNum==getRoomNumber(i) && getOT(i).isReady())
          count++;
      if(count==2)return true;
      return false;      
    }
    String getNamesInRoom(int roomNum){
      StringBuffer sb=new StringBuffer("[PLAYERS]");
      for(int i=0;i<size();i++)
        if(roomNum==getRoomNumber(i))
          sb.append(getOT(i).getUserName()+"\t");
      return sb.toString();
    }
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久这里只有精品6| 一本一道波多野结衣一区二区| 中文字幕一区在线| 久久久精品tv| 国产日产欧美一区| 欧美激情资源网| 国产精品伦理一区二区| 国产精品天干天干在观线| 美国三级日本三级久久99| 日本不卡123| 国产制服丝袜一区| 福利电影一区二区| 国产精品第四页| 亚洲欧美另类在线| 一区二区三区高清不卡| 日韩高清不卡一区| 精品在线亚洲视频| 成人午夜电影网站| 色婷婷av一区| 欧美丰满美乳xxx高潮www| 69堂精品视频| 久久一日本道色综合| 国产精品久久久久久久久免费桃花 | 欧美日韩成人激情| 欧美绝品在线观看成人午夜影视| 欧美一区二区三区免费观看视频| 精品国产伦一区二区三区免费| 国产亚洲精品bt天堂精选| 亚洲三级电影网站| 蜜臀久久99精品久久久久宅男 | 欧美无乱码久久久免费午夜一区 | 成人黄色一级视频| 欧美色电影在线| 日韩欧美电影一二三| 国产欧美日韩久久| 亚洲主播在线观看| 狠狠色丁香婷婷综合久久片| www.成人网.com| 日韩一二在线观看| 国产精品久久久久久久岛一牛影视 | 一区二区在线免费| 精彩视频一区二区三区 | 樱花草国产18久久久久| 蜜臀av性久久久久蜜臀aⅴ| 成a人片国产精品| 欧美疯狂性受xxxxx喷水图片| 欧美经典三级视频一区二区三区| 亚洲综合丝袜美腿| 中文字幕制服丝袜成人av| 水蜜桃久久夜色精品一区的特点| 国产酒店精品激情| 欧美一级精品在线| 一个色妞综合视频在线观看| 狠狠色2019综合网| 欧美熟乱第一页| 亚洲色图.com| 国产91精品露脸国语对白| 91 com成人网| 亚洲女厕所小便bbb| 中文字幕精品一区二区精品绿巨人| 亚洲国产美国国产综合一区二区| 国产91清纯白嫩初高中在线观看| 欧美一级免费大片| 婷婷国产在线综合| 欧美亚洲禁片免费| 国产精品成人免费在线| 国产精品996| 久久先锋影音av| 久久成人久久鬼色| 欧美一区二区三区电影| 亚洲一区二区三区爽爽爽爽爽| 国产精品电影一区二区| 成人午夜在线视频| 中文字幕乱码亚洲精品一区| 国产suv精品一区二区6| 久久精品视频在线看| 国产九色精品成人porny| 久久夜色精品国产噜噜av| 美国三级日本三级久久99| 欧美一级淫片007| 看国产成人h片视频| 9191成人精品久久| 久久国产精品免费| 久久99国内精品| 久久这里只精品最新地址| 国产乱人伦精品一区二区在线观看| 欧美变态tickle挠乳网站| 久久成人免费网| 国产网站一区二区| 91在线视频在线| 亚洲午夜电影在线| 精品黑人一区二区三区久久| 国产福利一区在线| 自拍偷在线精品自拍偷无码专区| 97se亚洲国产综合在线| 亚洲成人免费视频| 久久久亚洲欧洲日产国码αv| 不卡在线观看av| 婷婷中文字幕一区三区| 国产丝袜美腿一区二区三区| 9l国产精品久久久久麻豆| 亚洲国产精品一区二区久久| 欧美一卡二卡在线观看| 北条麻妃一区二区三区| 亚洲1区2区3区4区| 亚洲国产高清在线| 欧美亚洲国产bt| 国产在线国偷精品产拍免费yy| 国产精品久久久久毛片软件| 欧美日韩午夜在线| 国产精品一色哟哟哟| 一区二区三区高清不卡| 久久影院电视剧免费观看| 91日韩精品一区| 久久精品久久久精品美女| 亚洲欧美怡红院| 欧美mv和日韩mv国产网站| 色偷偷久久一区二区三区| 精品亚洲国产成人av制服丝袜| 亚洲欧美日韩国产综合| 2023国产精品视频| 欧美日韩精品久久久| 成人激情小说网站| 激情深爱一区二区| 亚洲一区在线电影| 国产精品日产欧美久久久久| 91精品国产91久久综合桃花 | 色悠悠久久综合| 极品少妇一区二区| 亚洲午夜在线视频| 亚洲欧洲日韩av| 国产盗摄视频一区二区三区| 日韩av在线播放中文字幕| 亚洲欧美视频在线观看视频| 久久久久国产一区二区三区四区| 欧美高清dvd| 欧美精品在线视频| 欧美性xxxxxx少妇| 99在线精品观看| 国产91精品露脸国语对白| 国产在线视频不卡二| 麻豆91精品91久久久的内涵| 欧美一卡2卡3卡4卡| 在线综合+亚洲+欧美中文字幕| 日本韩国一区二区三区视频| 91在线观看污| 91在线porny国产在线看| 成人中文字幕合集| 国产成人av网站| 国产福利电影一区二区三区| 国内成人免费视频| 国产成人综合亚洲网站| 大白屁股一区二区视频| 国产不卡免费视频| 国产91清纯白嫩初高中在线观看| 成人中文字幕在线| 一区二区三区加勒比av| 一二三区精品福利视频| 一卡二卡三卡日韩欧美| 亚洲午夜视频在线观看| 日韩中文字幕区一区有砖一区| 午夜日韩在线电影| 另类小说综合欧美亚洲| 激情综合色播激情啊| 成人久久18免费网站麻豆| 97久久精品人人做人人爽| 91久久香蕉国产日韩欧美9色| 欧美三级视频在线观看| 91麻豆精品国产| 精品盗摄一区二区三区| 久久蜜桃av一区精品变态类天堂| 久久久久97国产精华液好用吗| 亚洲国产精品成人综合| 亚洲精品国产第一综合99久久 | 欧美不卡视频一区| 久久嫩草精品久久久精品一| 中文字幕精品综合| 亚洲与欧洲av电影| 看电视剧不卡顿的网站| 成人动漫一区二区在线| 欧美高清激情brazzers| 国产亚洲制服色| 一区二区欧美国产| 精品在线亚洲视频| 色婷婷av一区二区三区gif| 91精品国产一区二区三区香蕉| 精品国产乱码久久久久久老虎| 欧美激情资源网| 石原莉奈在线亚洲二区| 顶级嫩模精品视频在线看| 欧美日韩综合一区| 欧美激情艳妇裸体舞| 日韩av中文字幕一区二区三区| 福利一区在线观看| 欧美日本韩国一区二区三区视频 | 视频一区视频二区中文字幕| 国产成人av电影在线播放| 欧美午夜精品久久久久久孕妇| 中文一区在线播放| 久久精品国内一区二区三区|