| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 |
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> JAVA文章 >> java socket >> 文章正文
如何用Java实现网络中国象棋室(二)        【字体:
如何用Java实现网络中国象棋室(二)
作者:-    文章来源:-    点击数:    更新时间:2006-7-24

2、象棋服务主类,接收用户登录连接,和用户的数据处理和转发:
package sunstudio;

import sunstudio.event.*;
import java.util.*;
import java.net.*;
import java.io.*;
import sunstudio.util.*;

public class ChessServer implements LoginListener{

int tablecount=20;
ChessTable[] tb=new ChessTable[tablecount];

Hashtable userlist=new Hashtable();

public ServerSocket ss=null;
ChessLogin cl=null;
public static ChessServer hwnd=null;

public static void main(String[] args){
ChessServer server=new ChessServer();
}
public ChessServer(){
for(int i=0;i try{
ss=new ServerSocket(2000);
cl=new ChessLogin(this);
}catch(IOException e){e.printStackTrace();}
hwnd=this;
}
public int addTableUser(int tableID,int userID,int state){
if(tb[tableID].contains(new Integer(userID)))return -1;
int st=state;
for(Enumeration enu=tb[tableID].elements();enu.hasMoreElements();){
ChessUser user=(ChessUser)enu.nextElement();
if(user.state<2&&user.state==st){
st+=2;
break;
}
}
ChessUser user=(ChessUser)userlist.get(new Integer(userID));
user.setState(st);
user.tableID=-1;
tb[tableID].put(new Integer(userID),user);
return st;
}
public void removeTableUser(int tableID,int userID){
if(tableID<0||tableID>19)return;
ChessUser user=(ChessUser)tb[tableID].remove(new Integer(userID));
if(user!=null){
user.tableID=-1;
user.state=-1;
}
}
public boolean addUser(ChessUser user){
if(userlist.contains(new Integer(user.userID)))return false;
userlist.put(new Integer(user.userID),user);
return true;
}
public void removeUser(int userID){
ChessUser user=(ChessUser)userlist.remove(new Integer(userID));
if(user!=null){
user.close();
user=null;
}
}
public void sendToRoom(byte[] h,int l,byte[] d){
for(Enumeration enu=userlist.elements();enu.hasMoreElements();){
try{
((ChessUser)enu.nextElement()).sender.sendData(h,d,l);
}catch(Exception e){}
}
}
public void sendToTable(byte[] h,int l,byte[] d){
for(Enumeration enu=tb[h[3]].elements();enu.hasMoreElements();){
try{
((ChessUser)enu.nextElement()).sender.sendData(h,d,l);
}catch(Exception e){}
}
}
public byte[] getUserListData(){
byte[] ul=new byte[userlist.size()*14];
int ptr=0;
for(Enumeration enu=userlist.elements();enu.hasMoreElements();){
ChessUser user=(ChessUser)enu.ne

[1] [2] [3] [4] [5] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • HTTP 1.1状态代码及其含义

  • java开发的邮件发送程序

  • 从socket中读取数据时使用超…

  • 对等计算实践:基于 IP 多播…

  • 穿透Socks5 代理的UDP编程

  • 使用Java控制UDP协议

  • 一个Socket服务器样板程序

  • Java Socket编程

  • Java Socket编程之五

  • Java Socket编程之四

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |