|
网站首页
|
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
上一篇文章:
一个Socket服务器样板程序
下一篇文章:
使用Java控制UDP协议
【
发表评论
】【
加入收藏
】【
告诉好友
】【
打印此文
】【
关闭窗口
】
最新热点
最新推荐
相关文章
HTTP 1.1状态代码及其含义
java开发的邮件发送程序
从socket中读取数据时使用超…
对等计算实践:基于 IP 多播…
穿透Socks5 代理的UDP编程
使用Java控制UDP协议
一个Socket服务器样板程序
Java Socket编程
Java Socket编程之五
Java Socket编程之四
网友评论:
(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
|
设为首页
|
加入收藏
|
联系站长
|
友情链接
|
版权申明
|
管理登录
|
Copyright ©2000 - 2005
Enadd
.com
备案序号:辽ICP备06005595号
站长:
enadd