斗地主服务端设计
来源:互联网 发布:爱福窝软件福币 编辑:程序博客网 时间:2024/04/29 00:58
斗地主服务器端
负责监听的socket:
类中三个属性:
Clients:(ArrayList)所有的连接到服务端的client socket
Team:(ArrayList)所有加入组的连接服务端的client socket
notJoinTeamClients:(ArrayList)还没有加入组的连接到服务端的client socket
1. 实例化socket,假定名为listener绑定52134端口,
2. Listen(500)---限制client不超过500
3. Begin Accept异步接受client的连接。
原型:BeginAccept(new AsyncCallback(AcceptCallback),listener)
//参数callback:AsyncCallback 委托,引用在异步操作完成时调用的回调方法。
//AsyncCallback 引用的事件处理程序包含完成客户端异步任务的程序逻辑。
//参数state :包含此请求的状态信息的对象。
4. AcceptCallback(IAsyncResult ar)原型
/AsyncCallback 使用 IAsyncResult 接口获取异步操作的状态。
Socket listener=(Socket)ar.AsyncState;
//IAsyncResult.AsyncState 属性,此属性返回一个对象。
//该对象是启动异步操作的方法的最后一个参数。
Socket ClientSock=listener.EndAccept(ar); //得到客户端socket
Clients.Add(ClientSock);
notJoinTeamClients.Add(ClientSock);
listener.BeginAccept(new AsyncCallback(AcceptCallback),listener);
//表示回到前面第3步循环accept
当前连接的clientsocket开始receive
ClientSock.BeginReceive(Buffer,0,BufferSize,0,new AsyncCallback(ReceiveCallback),ClientSock);
//把所有的玩家组队信息发给他,供他选择或者自行组建组 Send(ClientSock,AssembleString.AssGroupMsgA(teams.Count,teams));
//把所有的玩家组队信息发给他,供他选择或者自行组建组
//Accept到此结束
5.ReceiveCallback(IAsyncResult ar)原型
Socket ClientSock=(Socket)ar.AsyncState;
int BytesRead=ClientSock.EndReceive(ar); //结束挂起的异步读取。返回值:接收到的字节数。
comString = Encoding.UTF8.GetString(Buffer,0,BytesRead);
//判断它是否已经加入某个组了,如果没加入,则根据它所发消息建立组或者让它加入指明的组
ProtocolType pt = ParseString.getType(comString);
(未完待续)
- 斗地主服务端设计
- 斗地主项目设计
- 斗地主AI设计
- 斗地主AI设计
- 【转】斗地主AI设计
- 设计思路JAVA斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- java四人网络斗地主游戏《服务端》
- 从游戏运行过程来分析斗地主设计思路
- web 服务的好处是什么
- 如何取到含有多个数值的字符串中的各个数值
- 大学恋爱经验谈
- [zz]字符串与数组工具
- 国庆节
- 斗地主服务端设计
- ShadowStar CodeFast 1.1 自动匹配输入()[]{}''""
- DVD的基础知识
- 内置于win xp的防火墙ICF应用
- ASP常用数据库连接及操作的方法和技巧
- 融化
- 如何提高insert大批量数据的效率
- 字符串
- Rundll.exe 的用法