基于Linux的Socket网络编程的性能优化.pdf
《基于Linux的Socket网络编程的性能优化.pdf》由会员分享,可在线阅读,更多相关《基于Linux的Socket网络编程的性能优化.pdf(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1 7 卷第9 期V 0 1 1 7N o 9电子设计工程E l e c t r o n i cD e s i g nE n g i n e e r i n g2 0 0 9 年9 月S e p t 2 0 0 9基才L i n u x 的S o c k e t 网络编程的性能优化王雷1 王子淘2(1 太原理工大学信息和通信工程学院。山西太原0 3 0 0 2 4;2 天津大学计算机学院,天津3 0 0 0 7 2)摘要:介绍在L i n u x 操作系统环境下S o c k e t 网络编程的原理、流程和最终实现。编程采用客户端服务器模式。提出解决多个客户端连接服务器时无法处理!O 多路复
2、用问题的方法。提出通过最小化报文传输来减少传输时延,为B a n d w i d t hD e l a yP r o d u c t 调节T C P 窗口。实现充分利用带宽提高L i n u x 的S o c k e t 性能。在实际网络传输环境复杂多变的情况下。达到优化网络传榆性能的目的。关键词:L i n u x;性能优化;S o c k e t;s e l e c t()中图分类号:7 r P 3 9 3 0 9文献标识码:A文件编号:1 6 7 4 6 2 3 6(2 0 0 9)0 9-0 1 0 1-0 3P e r f o r m a n c eo p t i m i z a t
3、 i o no fS o c k e tn e t w o r kp r o g r a m m i n gb a s e do nL i n u xW A N GL e i l,W A N GZ i-t a 0 2(1 S c h o o lo f I n f o r m a t i o na n dC o m m u n i c a t i o nE n g i n e e r i n g,T a i y u a nU n i v e r s 蚵o fT e c h n o l o g y,T a i y u a n0 3 0 0 2 4,C h i n a,-2 S c h o o lo
4、 f C o m p u t e r,T i a n j i nU n i v e r s i t y,T i a n j i n3 0 0 0 7 2,C h i n a)A b s t r a c t:T h i sp a p e rd e s c r i b e st h ep r i n c i p l ep r o c e s sa n du l t i m a t eo fs o c k e tn e t w o r kp r o g r a m m i n gi nt h ee n v i r o n m e n to fL i n u x T h ep r o g r a m
5、m i n ga d o p t sC l i e n t S e r v e rm o d e,i ts h o w sam e t h o dt os o l v et h ep r o b l e mt h a ti su n a b l et od e a lw i t hm u l-t i p l e x i n go fI Ow h e ns e v e r a lc l i e n t sc o n n e c tt os e r v e ra tt h es a m et i m e T h i sp a p e rp r o p o s e st oi m p r o v e
6、t h ep e r f o r m a n c eo fS o c k e tb a s e do nL i n u xb ym i n i m i z i n gm e s s a g et r a n s m i s s i o nt or e d u c et h ed e l a y,a n da d j u s t sT C Pw i n d o wf o rB a n d w i d t hD e l a yP r o d u c tt om a k ef u l lu s eo fb a n d w i d t h A tl a s t,w ea c h i e v et h
7、ep u r p o s eo fp e r f o r m a n c eo p t i m i z a t i o no fn e t w o r ki nm o r ec o m p l e x i t yn e t w o r ke n v i r o n m e n t K e yw o r d s:L i n u x;p e r f o r m a n c eo p t i m i z a t i o n;S o c k e t;s e l e c t()1 引言随着I n t e m e t 的日益发展和普及网络在嵌入式系统中应用非常广泛,越来越多的嵌入式设备采用L i n u
8、x 操作系统。L i n u x 是一个源代码公开的免费操作系统,具有强移植性,所以对基于L i n u x 的S o c k e t 网络编程的研究越来越重要。2S o c k e t 简介在L i n u x 中的网络编程通过S o c k e t 接1 3 进行是一种特殊的I O,也是一种特殊的文件描述符。S o c k e t 是使用标准L i n u x 文件符(f i l ed e s c r i p t o r)和其他程序通信的方式。这里S o c k e t 编程采用客户服务器模式如图l 所示。匪巫口匝互囵图l 客户端,服务器模式S o c k e t 实际是网络传输层供给应用
9、层的编程接口。传输层则在网络层的基础上提供进程到进程间的逻辑通道而应用层的进程则利用传输层向另一台主机的某一进程通信。S o c k e t 就是应用层与传输层之间的桥梁。如图2 所示。S e r y e rC l i e n t应用层l f s。k e t传输层网络屡数据铹路层物理层应用层l f s o c k。t传输层网络层数据锚路层物理层图2S o c k e t 是应用层与传输层之间的桥梁使用S o c k e t 编程时可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信。也可以通过I n t e r a c t 在全球范围内进行通信。编写并运行S o c k e t 的客户
10、端和服务器端程序,双方通过套接字建立了服务连接请求,并且通过一些方法提高S o c k e t 的性能。3S o c k e t 编程3 1S o c k e t 类型常见的S o c k e t 有3 种类型1 2 1:(1)流式S o c k e t(S O C K-s 1 R E A M)它提供可靠的通信流。使用匝向连接的T C P 协议从而保证数据传输的正确性和顺序性:收稿日期:2 0 0 9-0 4 1 7m t q m 号-:2 0 0 9 0 4 0 4 0(2)数据报S o c k e t(S O C K _ D G R A M)数据通过相互独立作者简介:王雷(1 9 8 4
11、一),男。江苏徐州人,硕士研究生。研究方向:嵌入式流媒体技术。1 0 1-万方数据电子设计工程 2 0 0 9 年第9 期的报文进行传输,是无序的,并且小保证i r 靠,无差错,它定义一种面向无连接的服务,使用数据报胁议U D P;(3)原始S o c k e t(S O C K _ R A M)它允许直接访问底层协议,功能强大但使用较为不便,主要用于一些协议的开发。本编写的S o c k e t 属于流式S o c k e t。3 2S o c k e t 编程流程S o c k e t 编程采用客户朋艮务器模式 3 1。因此编程分为服务器端和客户端两部分。每一个S o c k e t 都用
12、一个半相关描述(协议,本地地址,本地端口)来表示S o c k e t 也有一个类似于文件打开的函数该函数返回一个整型的S o c k e t 描述符,随后建立连接,数据传输等操作都通过S o c k e t 来实现。编程流程如下:服务器端首先建立S o c k e t,返回该S o c k e t的描述符;配置S o c k e t 的端口和I P 地址;建立监听函数,检测是否有客户端向服务器发送请求,若有则接收该请求。将其放到接收队列中;从接收队列中接受一个请求:并向客户端发送确认连接信息。客户端建屯一个S o c k e t 返回该S o c k e t 的描述符:配置S o c k e
13、 t 端口和I P 地址;向服务器发送连接请求,并接收服务器发回的确认连接信息。双方通信结束后,关闭其S o c k e t。进行S o c k e t 编程的基本函数有s o c k e t(),b i n d(),l i s t e n(),a c c e p t(),c o n n e c t(),s e n d(),r e c v(),c l o s e(o 图3 为S o c k e t 的编程流程图。服务器端S o c k e t()建立流式套接字客户端B i n d()S 建立流式套接字接I 字Il 目B 置本地端口和I PL is t e l l()I l 配置本地的端口和)口
14、和I Pl 监听和接收服务器请求l 接受版瓣娃连接H 与霈刍妥姿接lR e c v()和S e n d()卜_ 叫S e n d()和R e c v()ll 接收信息和发送信息I*-l 发送信息和接收信息lC I o s eIc l o s e关闭套接字l关闭套接字图3S o c k e t 编程流程图3 3 程序的编译和运行结果(1)在L i n u x 的V I 编辑器下编写服务器端程序s e r v c 和客户端程序c l t C。运用交叉编译T 具a r n l 1 i n u x g c c l 4 I。执行编译指令生成可执行文件。其指令为:#g c cs e r v c-os e
15、r v#g c cc h C-Oc l t编译没有错误则会生成可执行文件s e r v 和c l t。(2)配置服务器和客户端的I P。保证网络畅通,在s e n r c中已将服务器的I P 设置为:1 9 2 1 6 8 2 1 l l。在客户端的“网络设置”中设置I P 为:1 9 2 1 6 8 2 2 2,可以通过p i n g 命令检测网络是否畅通。(3)在一台计算机的终端先运行服务器程序(s e r v),再1 0 2-在客户端的计算机终端上运行客户端程序(c I t1 9 2 1 6 8 2 1 1 1)就会看到结果(H e l l o,W a n gL e i!Y o ua r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Linux Socket 网络 编程 性能 优化
限制150内