拼吾爱程序人生

首页 » .Net编程 » C# » 基于TCP的网络游戏黑白棋系列(二):数据传输
cobra - 2008-9-24 21:03:00
上一节给大家演示了建立连接的关键代码,连接建立好后,就可以进行数据传输了。数据传输包含从服务器端到客户端和从客户端到服务器端,两者差别不大。
数据的传输,TcpClient的GetNetworkStream是关键,通过它我们可以得到NetworkStream网络流,客户端和服务器主要的工作就是对其读出和写入。关于如何构造稳定且性能好的网络应用,如何进行复杂的封包和解包,这里我们不考虑,我们使用StreamReader和StreamWriter来封装NetStream,读取和写入的代码如下



Code



客户端和服务器的通信一般是由客户端向服务器端发请求,服务器端接受请求并处理,再将结果重新发回客户端
发送请求和应答的协议格式可以自己定义,游戏中使用的协议格式为  命令,参数1,参数2......
先看一下客户端请求登录


Code



服务器接受请求并处理,一般来说是根据不同的请求创建不同的线程进行处理,见本节后半部分

Code



服务器负责监听并根据不同的用户启动不同的线程

Code




ListenClientConnect方法

Code



此处的启用了ParameterizedThreadStart 线程处理带参数的ReceiveData方法,主要是防止同客户端传输数据的过程出现的异常不能正确处理导致线程崩溃,每一个客户端分配一个线程可以保证客户端各自的独立性;同时ParameterizedThreadStart允许传递参数。至此我们完成了一个简单的服务器客户端应答,希望能对初学者有所帮助。

文件下载:
 附件: 您所在的用户组无法下载或查看附件




(文/basilwang  出处/博客园)

 您可能对 [C#] 的这些文章也感兴趣:

总体了解C#(2)
介绍.NET中的委派(二)
.NET编译技术内幕
C# 实现 RDLC 自定义报表
Microsoft.NET中的基类继承
HttpClient, 使用C#操作Web
DirectX编程:C#中利用Socket实现网络语音通信[初级版本]
C# wm6通过udp协议和pc通讯
c#中对文件的操作小结
用C#把文件转换为XML
1
查看完整版本: 基于TCP的网络游戏黑白棋系列(二):数据传输
Modify by pin5i DZNT_ExpandPackage 2.1.3258 2007-2008 pin5i.com
  Total Unique Visitors: