基于C#的网络通信实现
C#是Microsoft在2000年7月推dl.NETFramework的初版时提出的一种全新语言⑴。其派生于C/C++,语法更加简化,非常适合快速学习开发,C#语言吸収了C/C++的优点,摒弃了它们的繁琐之处。
利用VisualC#语言可以方便快速编写应用程序,互联网时代己经离不开网络信息的交换,为了方便不同计算机和不同网络之间相互连接,进行数据资源共享,需要使用网络通信协议。当
前,TCP/IP协议是用得比较普遍的类型⑵。
1实现网络通信的主要类
网络通信一般会用到三大类,使用Sockets类具有许多优势,与Sockets网络应用程序有关的类处于System.Net.Sockets命名空间中,Socket类拥有许多属性和方法,完全支持套接字的编程,可以实现对端口的绑定、监听以及连接、数据传输等目的⑶。
1.1TcpCIient 类
基于TcpCIient类的编程,使得以传输控制协议TCP网络通信的调用形式更为方便,其主要用于Client端编程,如表1列出了其常用属性和方法。
表1TcpCIient有关的属性和方法
1.2 TcpListener 类 |
TCP协议服务器端的设计通常会用到TcpListener类,它属于.NET框架下网络通信中的应用层,通常是监视TCP端口上客户端的请求,如表2列出了其常用的属性和方法。
表2TcpListener有关的属性和方法
属性或方法 | 用途 |
LocalEndpoint 属性 | 监听套接字的Local主机 |
Server属性 | 获得Socket的基本信息 |
TcpList en er()方法 | 创立一个TcpListener对象 |
Start()方法 | 开始监听 |
AcceptSocket()方法 | 接受连接请求 |
AcceptTcpClient()方法 | 接受请求连接 |
Stop()方法 | 停止连接 |
1.3Socket 类
Socket类提供了对套接字的支持⑶,由于C#语言语法简洁、功能强大,因此基于套接字的网络编程变得十分简单,如表3列岀了其常见属性和方法。
表3Socket有关的属性和方法
属性或方法 | 用途 |
Available 属性 | 得到接收数据量的大小 |
Connected 属性 | 得到是不是连接成功的信息 |
ProtocolType 属性 | 说明协议类型 |
SocketType 属性 | 说明套接字的类型 |
Socket Accept()方法 | 构造一个新的套接字对象 |
GetType ()方法 | 获得对象的类型 |
Connect()方法 | 用于连接远程终端 |
Poll()方法 | 用于查看套接字的状态 |
EndConnect()方法 | 用于结束为处理的远程连接请求 |
Receive()方法 | 从特定被主机接收数据 |
Equals()方法 | 用于对比两个对象是不是一样 |
2通信机制的设计与实现
TCP网络通讯运行时,它将会先初始化服务器端的程序,接着使用Socket类来创立一个实例,继而使用Bind()方法将实例与服务器IP地址绑定在一起,做好准备工作;接着使用Listenerf)方法进入开始监听客户机端的状态,同时指明等候服务器请求队列的长度;然后,使用Accept()方法等候客户端发出连接申请。客户端与服务端一样,也会使用Socket创立一个实例,然后使用Connect()方法与服务器建立连接。在服务器端监听的过程中,当客户端发出连接请求且被服务器端接收到,就表明服务器端与客户机端连接成功,此时可以进行通信了,可利用网络流
Networkstream的读Read()方法以及写Write()方法达到发送或接收数据包的目的,其通讯流程如图1所示。
、'卩
< | llttl | ?S |
图1服务端与客户端通信流程图3实验结果与分析
_______ 图2服务端监听七唤塚序_确湍
图3客户端请求连接
|
|
图6客户端发送消息
smr: | 127 0,0.1— |
北鮭
邸虻1: | 8080 |
艸信息: | 发送值息: |
就花开》〉>准很和Mfm 好久不见?最近胸? W> 岀门7屿? | |
脳卸口险am]| m?L]目臓收删施
与客户沁
图7服务端接收消息
服务端与客户端界面设计如上图所示,服务端输入有效且格式正确的IP地址以及监听 端口,点击开始监听按钮,客户机端输入相同的IP地址和请求端口,点击请求连接按钮, 在服务器端statusStripl ±显示与客户建立连接,如图2所示;在客户机端的statusStripl上 也会自动显示与主机和端口连接成功,如图3所示。此时服务器端和客户机端就能互相通信 了。如图4所示,在服务器端发送消息框中输入问候语,点击发送信息按钮,消息成功发送,
如图5所示,在客户机端的接受消息框中会显示所接收到的信息,即服务器端的发送消息框中的信息,消息成功接收。如图6所示,在客户机端的发送信息框中输入回复的消息,点击
发送消息按钮,信息成功地从客户机端发送出去。如图7所示,在服务器端的接收信息框中会显示来自客戶机端的消息,即消息成功接收°达到了服务器端和客户机端双向通信的目的。4结语
笔者采用VisualStudio 2012开发平台,利用C#的Windows窗体应用程序进彳亍了网络通信的探讨,用到了网络编程常用的类,方便快速地建立了网络连接,Sever端和Client端成功通信,完成了数据发送与接收。TCP在连接方式上一般能够分为长期连接和短期连接,考虑TCP通讯的特点和本设计的主旨,笔者选用长期连接,连接成功后,通讯不会主动闭塞,服务器端和客户
机端可以长时间通信,符合聊天的特点。