您所在的位置:最新奇迹私服,变态奇迹私服,奇迹私发网,亿源奇迹私服信息网 > 奇迹工会 > 正文
本篇关键词:奇迹私服 更新时间:12/02/20 文章作者:奇迹私服 文章来源:http://www.ytyiyuan.com/
让我们来看看如何实现:tagMessageMsg;Msg.lTypeMSG_CHAT;Msg.lPlayerID 1000;strcpy;??? 首先,我们假设已经组织好一个数据包,这里MSG_CHAT 是我们自行定义的标识符,当然,这个标识符在服务器和客户端要统一 网络游戏封包基础7 在Windows系统中,我们可以通过CreateThread函数来进行线程的创建,看看下面的代码片段:DWORD dwThreadID;HANDLE hThread = CreateThread;if{ Failed;}这里我们创建了一个线程,同时将我们的Socket传入线程函数:DWORD WINAPINetThread{ SOCKET sSocket lParam; ... return 0;}??? NetThread就是我们将来用于处理网络通讯的网络线程那么,我们又如何把Socket的处理引入线程中???? 看看下面的代码片段:HANDLE hEvent;hEvent = CreateEvent;// 设置异步通讯if ==SOCKET_ERROR ){ Failed;}??? 通过上面的设置之后,WinSock API函数均会以非阻塞方式运行,也就是函数执行后会立即返回,这时网络通讯会以事件方式存储于hEvent,而不会停顿整支程式??? 完成了上面的步骤之后,我们需要对事件进行响应与处理,让我们看看如何在网络线程中获得网络通讯所产生的事件消息:WSAEnumNetworkEvents;if{ switch {case FD_ACCEPT:WSANETWORKEVENTS SocketEvent回归自然 作文s; break;case FD_CONNECT: {if// 连接成功{// 连接成功后通知主线程进行处理 } } break;case FD_READ:// 获取网络数据 {if == SOCKET_ERROR ) {Failed; } } break;case FD_WRITE: break;case FD_CLOSE:// 通知主线程, 网络已经断开 break;default:}}??? 这里仅对网络连接 和读取数据 进行了简单模拟操作,但实际中网络线程接收到事件消息后,会对数据进行组织整理,然后再将数据回传给我们的游戏主线程使用,游戏主线程再将处理过的数据发 送出去,这样一个往返就构成了我们网络游戏中的数据通讯,是让网络游戏动起来的最基本要素??? 最后,我们来谈谈关于网络数据包的组织,网络游戏的数据包是游戏数据通讯的最基本单位,网络游戏一般不会用字节流的方式来进行数据传输,一个 数据封包也可以看作是一条消息指令,在游戏进行中,服务器和客户端会不停的发送和接收这些消息包,然后将消息包解析转换为真正所要表达的指令意义并执行??? 互动与管理??? 说到互动,对于玩家来说是与其他玩家的交流,但对于计算机而言,实现互动也就是实现数据消息的相互传递前面我们已经了解过网络通讯的基本概念,它构成了 互动的最基本条件,接下来我们需要在这个网络层面上进行数据的通讯遗憾的是,计算机并不懂得如何表达
<<上一篇 我希望你给我一次机会┊下一篇能在一瞬间洞察女人的心事>>