论TCP/IP协议和多线程通信软件的设计及实现研究
为了实现可靠的数据传输,通信软件的服务器端通常通过多线程技术的利用达到与通信运营商转发中心和客户端进行网络通信,并完成数据的采集和解析。通信软件客户端能够与其服务器建立连接,并接收服务器传输的实时二进制数据,通过解析将数据以数据表格的形式展示出来。本文就对TCP/IP协议和多线程通信软件的设计与实现进行了研究。
【关键词】TCP/IP协议 多线程 通信软件 客户端 服务器
通信软件就是一种用于通信交流的互动式软件,将数据采集、通信和显示功能集于一体,它所具有的实时性、准确性和高效率为人们的交流和其他领域中系统性能提供了很大帮助。为了让通信软件的效率得到有效提高,就可以采取多线程技术,将整个任务划分为多个线程同时进行,进而提高程序的执行效率。
1 通信软件的总体设计与实现
通信软件的服务器与客户端都是在Visual Studio 2005开发平台上进行编译实现的,并通过TCP/IP协议和多线程技术实现客户机和服务器结构(C/S结构)的通信,将大型企业版的ORACLE9i数据库作为服务器的数据库,因为嵌入式数据库不会占据太多的资源,符合客户端软件的容量下等特点,因此该客户端的数据库是嵌入式数据库Sqlite。利用TCP/IP协议来实现网络通信的主要环节就是建立客户端和服务器之间的联系,服务器需要通过怎样的方式对已连接的客户端列表进行维护,以及当通信故障出现或服务器发生重启等现象又该怎样及时快速的让系统恢复运行,其中建立客户端和服务器之间联系的具体活动应该是服务器可以对一个由合法客户端传达的请求链表进行维护,当客户端长时间不接收数据或者发现客户端出现网络连接错误,那么就会对这类客户端进行定期清理,并只接受合法客户端传达的连接请求,对其进行数据发送。当服务器和客户端进行交互时,从中可以看出客户端向服务器发出连接请求的时候,服务器首先会对config.txt文件进行读取操作,用以检查客户端IP地址的合法性,当检查合法就进行接受操作,反之拒绝。当完成连接后客户端会发出读取数据的请求,服务器则接受请求并进行数据的发送,这时客户端进行多线程处理。将阻塞类的CSocket作为Socket的基类,它能在非阻塞socket的基础上进行阻塞操作,进而在此期间进行消息循环。
而服务器端的运行应该是从AISSender向TransferCenter发送AIS data,通过确定AIS data再向ParserView发送AIS binary file,然后再由Manager执行socket port has data,锁定MsgQueue。也就是当服务器端与通信运营商进行SIA数据中心的首次转发,就进行TCP/IP连接的建立,并将接受数据线程启动,负责进行二进制数据文件的接受;处理数据线程,负责进行二进制数据的解析,将解析结果显示在界面上的同时向服务器数据库进行存储;而对客户端连接线程的监听则主要是实现监听Socket和用户Socket之间关系的建立。客户端运行在运行的时候,客户端启动连接程序主要是负责在某些情况下进行与服务器的重新连接操作,例如客户端与服务器端连接错误,服务器重启或者网络错误等现象。当连接成功后则会将读数据线程启动,此时能够对网卡缓冲区中的数据进行直接读取,并将数据写入到MsgQueue的变长链表中,储存数据,避免丢失。而OnInitialUpadate则会将数据处理进程启动,读取消息链表中的数据,逐条解析,并在数据库中插入数据,或者更新数据,将其在界面上显示出来,同时删除全部处理完的数据。
为了避免客户端出现死机现象,就要保持客户端和服务器端程序中Reservered for Regional Application同为byte类型,这样才不会让m_buf数组长度较81920大,让网卡缓冲区持续进行新数据的读入,进而让程序一直判断m_nlen长度,从而陷入死循环中。
2 结束语
总而言之,通信软件通过采用客户端/服务器模式进行数据的传输和采集,在Visual Studio 2005的开发平台上利用多线程技术和Socket实现编程,并利用面向对象方法进行系统的分析设计过程,不断加强系统的扩展性和可重用性,进一步提升通信软件的实效性。
参考文献
[1]刘爽,史国友,张远强.基于TCP/IP协议和多线程的通信软件的设计与实现[J]. 计算机工程与设计,2010(07):1417-1420+1522.
[2]陈张荣.计算机多线程TCP/IP协议还原技术概述[J].电子技术与软件工程,2014(21):19.
[3]孙桂斌. 基于TCP/IP协议多客户连接的服务端程序实现[J].电脑编程技巧与维护,2009(20):83-85.
[4]曹秀霞.基于TCP/IP协议的无线视频传输控制系统的设计与实现[D].西安电子科技大学,2013.
作者单位
江苏自动化研究所 江苏省连云港市 222061