1、毕业论文文献综述 电子信息工程 Socket 技术综述 摘要 : 在 网络 通信中, Socket 套接字明确了发送端到达接收端的有效途径,在网络传输层上建立通信关系,实现数据交互的接口。由于网络通信的复杂性,在建立通信关系的前提下,必须引进线程机制处理通信细节,以便保证各节点通讯的独立和并发。 在 Windows Mobile 设备上实现基于 Socket的文件传输,必须 深入理解线程的处理技巧, 同时 将 其 灵活运用到通信网络编程 中,完成文件传输的功能 。 关键字 :套接字;线程;网络通信 1.引言 Socket 编程技术作为进程问通信的 常用技术,以其能够灵活定制包格式、灵活构造高效
2、通信服务等优势成为构建基于 TCP/IP 协议的网络应用程序时最常用的开发技术之一。使用跨平台、电信级、IPV4 和 IPV6 兼容的 Socket 通信框架,在开发基于 Socket 通信的网络应用程序时不必关心 Socket通信部分的平台移植问题、 Socket 通信问题、 IPV4 与 IPV6 的兼容问题,而可以直接构造应用,从而大大加快开发进度。 目前还没有一个具有上述功能的开放的框架可以被用来构建基于 Socket 通信的网络应用程序;而构建 UDP 服务器、 TCP、 TCP 的长连接客 户端往往成为构建 Socket 应用程序时的关键技术。因此构建一个支持多个 TCP 和 UD
3、P 服务器、多个 TCP 长连接客户端的跨平台、电信级、 IPV4 和 IPV6 兼容的 Socket 通信框架对于加快项目开发进度、降低代码平台移植难度都很有意义 1。 2. Socket 技术 Socket 通常也称作套接字,用于描述 IP 地址和端口,是一个通信链的句柄。应用程序通常通过套接字向网络发出请求或者应答网络请求。生成套接字,主要有 3 个参数:使用的端口号,传输层协议 (TCP/UDP)和通信的目的 IP 地址。通过将这 3 个参数结合起来,与一 个 socket 绑定,应用层就可以 和 传输层通过套接字接口,区分来自不同应用程序或网络的通信,实现数据传输的并发服务 2。So
4、cket 是建立在传输层协议(主要是 TCP 和 UDP)上的一种套接字规范,它定义两台计算机间进行通信的规范(也是一种编程规范),如果说两台计算机是利用一个通道,那么这个通道的两端就是这个套接字。套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了 TCP 协议软件和实现了套接字规范的计算机之间的通信成为可能 3。 文献 4 提出 Socket 分 为 两 种 : 流 式 Socket ( SOCK_STREAM) 和 数 据 报 式 Socket( SOCK_DGRAM)。 流套接 字 针对面向连接的 TCP 服务应用,提供了双向的、有序的、无重复并且记录边界的数据流服务。数据
5、报套接口对应于无连接的 UDP 服务应用,支持双向的数据流,但不保证是可靠、有序、无重复的。文献 5指出: 套接字接口( Socket Interface)是目前 Linux 上应用最广泛的一种进程间的通信机制。由于 Socket 本身不支持同步等待和超时处理,所以不能直接将其用于多进程间实时通信。 Socket 通信服务器采用预先创建线程的设计思路,为每个客户分配服务线 程并保持客户端与服务器的连接状态,只在进程异常时断开连接状态。客户端的套接字及端口号保存于客户端信息表中,服务器先将 接收 到的 Socket 消息压入队列,由发送线程统一完成消息的中转。对于读写客户端信息表的情况,可采用线
6、程互斥 机制 保护读写操作。 3.多线程技术 多线程技术能很好地解决并发多任务问题,提高资源的利用率和系统的整体性能,因此计算机的各个领域都对其进行了研究,从不同角度实现或增强了对多线程的支持。 多线程 提供了一种把程序划分成若干独立部分的方式 。 Java 的编程机制还可以把程序转换成彼此分离的,能独立运行 的子任务。而线程就是这些独立的子任务。在基于线程的多任务处理环境中,线程是最小的执行单位,是进行并发编程的关键 6。 线程是操作系统分配处理器时间的基本单位,是程序中一个单一的顺序控制流。合理地使用多线程技术,可以达到 “宏观上并行,微观上串行 ”的执行效果,从而有效提高处理器的利用率
7、7。传统操作系统中的单线程由进程控制块和用户地址空间、以及管理进程执行的调用 /返回行为的系统堆栈或用户堆栈构成。如果把进程的管理和执行 进行 分离,进程作为操作系统中保护和资源分配的单位,允许一个进程中包含有多个可并发执 行的控制流,这些控制流切换时不必通过进程调度,通信时可以直接借助于共享的内存区,这就是多线程 8。 文献 9讲述了多线程的种类: 多线程在实现方式上可以分为用户级多线程、混合级多线程和内核级多线程。 (1)用户级多线程 (ULT):这种方式是用线程库的方式来实现并调度线程,是语言级的线程提供机制。 (2)混合级多线程:在这种方式中,内核和用户级同时提供对多线程的支持,用户线
8、程库调度用户线程映射到内核线程。核心调度内核线程运行,它是内核级多线程和用户级多线程的综合。 (3)内核级多 线程 (KLT):在这种方式中,所有的线程都由操作系统内核来管理和生产的,如Windows NT、 OS/2 都是支持内核级多线程的操作系统。 文献 9对各线程的同步问题,现在的操作系统提供了许多安全、高级的线程同步控制方法。以Win32 系统为例,系统提供了同步对象来协调多线程的执行,同步对象有:冲突区 (Critical Section),事件对象 (Event Object),互斥 (Mutex)和信号量 (Semaphore): (1)冲突区 (Critical Section
9、):冲突区是一种保证在某时刻只 能有一个线程能够访问某种资源的方法。受保护的资源用一个冲突区对象来表示,这个对象为所有线程共享,哪个线程占有该对象,哪个线程就可以访问受保护的数据,也只有拥有该对象的线程才可以访问该数据,并且只有当占有对象的线程释放对象,其他线程才可以抢占它。 (2)事件对象 (Event Object):事件对象用来标志某个事件是否发生,从而确定是否执行某个线程。当一个线程在执行某项任务之前,需要等待某一事件发生的时候,使用事件对象非常方便。 (3)互斥对象 (Mutex):互斥对象是用来控制共享资源的方法,每个线程要访问共 享资源,都要首先获得互斥对象的拥有权。应用互斥对象
10、编程的时候最复杂,但也是控制共享资源最为强大的方法,它不仅能够在一个进程内的线程之间实现资源的完全共享控制,而且可以在不同进程的线程之间实现。 (4)信号量 (Semaphore):信号量是允许多个线程同时访问同一资源的方法。信号量的核心对象用于资源计数,维持着一个最小值为 0 的计数,为 0 时对象无信号,这时候除非有线程释放该资源,否则其他线程无法访问该资源。大于 0 时对象有信号,这时候其他线程可以访问该资源。当有一个新的线程夺得了资源,计数值就会减 l;当某线程释放了资源,计数值就会加 l。 文献 10分析了建立在串口基础上的电量采集过程,利用多线程技术可实现变电站综合分析系统中电流,
11、电压,功率因数等数据的实时采集、实时显示和实时分析,并对主变损耗,电量平衡等综合性能指标完成实时计算,并最终转化为图形的实时显示,同时对相关路线开关切换引起的电量统计方式的改变,能够自动识别并对电量进行自动处理。 4.总结 Socket 技术和多线程技术是一个不可分割的整体。两者在许多领域都有广泛的作用,并且两者之间通过互补互助,能更好的体现两个技术的实用性和重要性。 参 考文献: 1 王洪富 . 电信级 Socket 通信框架的研究与实现 D. 北京邮电大学:计算机应用 ,2004. 2 徐香明 . 基于 SOCKET 技术的集群网络监控管理实现 J.科技资讯 ,2010,18:20. 3
12、郝晓玲 ,赵刚, 靳 海英等 .基于 Socket 的无线网络传输研究 J.中国西部科技 ,2008, 7( 29) :23-24. 4 冯浩 ,苏磊 .基于 TCP 的多线程网络文件传输系统 J.电子信息学院通信工程 ,2008,7(8):93-94. 5 王艳艳 ,郅晨 ,张俊业 . 基于嵌入式 Linux 的 DM6446 编码器的设计 J.电视技术 ,2010, 34(3):17-19. 6 孔昊 ,胡银保 . 线程在基于 Socket 通信中的应用 J.兰州工业高等专科学校学报 ,2010,17(1):23-26. 7 骆斌 ,费翔林 . 多线程技术的研究与应用 J. 计算机研究与发
13、展 ,2000,37(4):407-410. 8 杨星星,张沛超,刘之尧等 .基于多线程技术的数字保护实时仿真系统 J.电力系统保护与控制 ,2009,37(19):73-75. 9 贾广雷 , 刘培玉 , 耿长欣等 . 多线程技术及其在串 口 通 信 中 的 应 用 J. 计算机工程 ,2003,29(1):246-250. 10 陈 根 永 , 程 亮, 郭 含 等 . 基 于 多 线 程 技 术提 高 电 量 采 集 的 实 时性 J. 微计算机信息 ,2009,25(25):87-88. 11 Young Hwan Choi, Sun Yeong Choi. Assessment of
14、 socket weld integrity in pipingsJ.Journal of loss prevention in the process industries,2009,22(6):23-28. 12 Sunwook Kim, Chanho Kim, Yongwha Chung. The offloading of socket information for TCP/IP offload engineC. Proceedings of the 11th international conference on Advanced Communication Technology, 2009. 13 L.E. Caligiuri, L.N.Eiselstein. Proper Design and Fabrication of Socket Welds for Use in Sour Service J.Materials Science Forum, 2010, 638(4):75-80.