- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于C# 的网络通信实现
C#是Microsoft在2000年7月推出.NET Framework的初版时提出的一种全新语言[1]。其派生于C/C++,语法更加简化,非常适合快速学习开发,C#语言吸取了C/C++的优点,摒弃了它们的繁琐之处。
利用Visual C#语言可以方便快速编写应用程序,互联网时代已经离不开网络信息的交换,为了方便不同计算机和不同网络之间相互连接,进行数据资源共享,需要使用网络通信协议。当前,TCP/IP协议是用得比较普遍的类型 [2]。
1 实现网络通信的主要类
网络通信一般会用到三大类,使用Sockets类具有许多优势,与Sockets网络应用程序有关的类处于System.Net.Sockets命名空间中,Socket类拥有许多属性和方法,完全支持套接字的编程,可以实现对端口的绑定、监听以及连接、数据传输等目的[3]。
1.1 TcpClient类
基于TcpClient类的编程,使得以传输控制协议TCP网络通信的调用形式更为方便,其主要用于Client端编程,如表1列出了其常用属性和方法。
表1 TcpClient有关的属性和方法
属性或方法用途NoDelay属性获取或设置一个值,用于延时ReceiveBufferSize属性获得接收缓冲区的字节数SendBufferSize属性获得发送缓冲区的字节数TcpClient()方法用于创立一个实例对象Connect()方法用于与TCP服务器主机连接GetStream()方法获得响应的数据流Close()方法用于闭塞与服务器的连接1.2 TcpListener类
TCP协议服务器端的设计通常会用到TcpListener类,它属于.NET框架下网络通信中的应用层,通常是监视TCP端口上客户端的请求,如表2列出了其常用的属性和方法。
表2 TcpListener有关的属性和方法
属性或方法用途LocalEndpoint 属性监听套接字的Local主机Server 属性获得Socket的基本信息TcpListener()方法创立一个TcpListener对象Start()方法开始监听AcceptSocket()方法接受连接请求AcceptTcpClient()方法接受请求连接Stop()方法停止连接 1.3 Socket类
Socket类提供了对套接字的支持[3],由于C#语言语法简洁、功能强大,因此基于套接字的网络编程变得十分简单,如表3列出了其常见属性和方法。
表3 Socket有关的属性和方法
属性或方法用途Available属性得到接收数据量的大小Connected属性得到是不是连接成功的信息ProtocolType属性说明协议类型SocketType属性说明套接字的类型Socket Accept()方法构造一个新的套接字对象GetType()方法获得对象的类型Connect()方法用于连接远程终端Poll()方法用于查看套接字的状态EndConnect()方法用于结束为处理的远程连接请求Receive()方法从特定被主机接收数据Equals()方法用于对比两个对象是不是一样2 通信机制的设计与实现
TCP网络通讯运行时,它将会先初始化服务器端的程序,接着使用Socket类来创立一个实例,继而使用Bind()方法将实例与服务器IP地址绑定在一起,做好准备工作;接着使用Listener()方法进入开始监听客户机端的状态,同时指明等候服务器请求队列的长度;然后,使用Accept()方法等候客户端发出连接申请。客户端与服务端一样,也会使用Socket创立一个实例,然后使用Connect()方法与服务器建立连接。在服务器端监听的过程中,当客户端发出连接请求且被服务器端接收到,就表明服务器端与客户机端连接成功,此时可以进行通信了,可利用网络流 NetworkStream 的读Read()方法以及写Write()方法达到发送或接收数据包的目的,其通讯流程如图1所示。
图1 服务端与客户端通信流程图
3 实验结果与分析
图2服务端监听 图3客户端请求连接
图4 服务端发送消息 图5客户端接收消息
图6客户端发送消息 图7服务端接收消息
服务端与客户端界面设计如上图所示,服务端输入有效且格式正确的IP地址以及监听端口,点击开始监听按钮,客户机端输入相同的IP地址和请求端口,点击请求连接按钮,在服务器端statusStrip1上显示与客户建立连接,如图2所示;在客户
原创力文档


文档评论(0)