摘要:该文阐述TCP通信的原理,多线程的概念,进行了一个多线程数据接收程序的设计,并使用C#编码实现。
关键词:多线程;C#;TCP
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)36-8624-02
某项目有一批终端设备定时发送定位信息到指定的服务器,服务器接收到信息处理后保存到数据库,以备后续显示使用。终端设备同服务器间通信采用TCP协议,一次信息发送完成后终端设备和服务器连接断开。设备之间没有信息交流,互相独立。信息发送的时间由终端设备自行决定。
1关键技术
1.1TCP通信原理
TCP协议是传输控制协议,适用于点到点,可靠通信。把通信发起方称为客户,把客户要通信的另一方称为服务器。客户把请求发给服务器,服务器收到客户的请求后提供服务。所以,TCP通信有两方,客户和服务器。在本应用中,终端设备是TCP客户,接收程序是TCP服务器。
1.2多线程
线程是程序中的一个执行流。是CPU调度和分派的基本单位。一个进程可以包含一个或多个线程,并且同一个进程内的多个线程共享一块内存和资源。
2需求分析
结合上述技术分析和应用要求,本应用中的终端机是TCP客户,要开发的程序是TCP服务器,用于接收TCP客户发送的定位信息并保存到数据库。终端设备有多台,且它们之间没有联系,任何终端信息发送时间是随机的。
3系统分析
TCP协议要求通信双方首先要建立连接,然后双方才能进行信息的交流,最后撤除连接。
服务器应设置有监听端口,工作在监听状态。当客户想同服务器通信时,客户可以向该端口发送连接请求,服务器收到连接请求后,可以建立新的通信链路以便客户和服务器进行信息交流。等到客户的通信结束后,服务器返回监听状态。在返回监听状态之前,服务器不能为其他客户提供服务,因此,在单线程模式,当前客户同服务器间的通信未结束前,其他客户无法连接服务器,只有等到它们的通信结束,服务器重新回到监听状态。这显然是低效的,不合理的。为了快速的为更多的客户服务,服务器应尽快地回到监听状态。为了到达此目的,只有采用多线程工作模式。即,服务器同客户建立连接后,服务器和客户的通信和连接的撤除交由新的线程完成,自己迅速返回到监听状态,这必然的缩短了其他客户的等待时间,提高了信息传输的效率。
4系统设计
设计思路:建立一个TCP服务器,运行后在指定的端口监听,当收到客户的连接请求后,会创建新的线程负责随后的双方的通信,自己则回到监听状态继续监听有无其他客户连接请求。新创建的线程在完成数据的接收后,断开连接,释放资源。
6测试及结果分析
测试过程:运行本服务程序,设置本机监听端口和协议,进入监听状态。设置终端设备的数据接收服务器IP地址为114.96.57.176(需在路由器做映射到内网IP地址:192.168.1.100),端口为5000,程序接收到终端设备发送的位置信息。结果见图2。
图2程序运行显示界面截图
从图2显示的信息看,信息已正确接收,程序运行正常。
参考文献:
[1]RobinsonS.C#高级编程[M].北京:清华大学出版社,2002.
[2]CasadJ.TCP/IP入门经典[M].井中月,译.北京:人民邮电出版社,2009.
[3]周有杰.VisualC#.Net网络核心编程[M].北京:清华大学出版社,2002.