欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Linux下网络Socket编程技术.pdf

    • 资源ID:70012561       资源大小:125.91KB        全文页数:4页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux下网络Socket编程技术.pdf

    2 0 0 5 年第2 期 通信与广播电视 5 l L i n u x 下网络 S o c k e t 编程技术 吴祖民 赵 勇一 杨仁庆一 摘 要 L i n u x 作为一个完全开放其原代码的免费的自 由软件,兼容了 各种U N I X标准 (如P O S IX、U N IX S y s t e m V和B S D U N I X等)的多用户、多 任务的具有复杂内 核的 嵌入式操作系统。L i n u x 下网络编程得到很非常广泛的应用,本文介绍的L in u x下 网络S o c k e t 的基本概念和函数调用。关键词:s o c k e t c o n n e c t l i s te n a c c e p t c l o s e r e a d w r i te S o c k e t P r o g r a n u n i n g u n d e r L i n u x Wu Z h u mi n Z h a o Y o n g Y a n g R e n q i n g Ab s t r a c t A s a f u ll y s o u r c e c o d e o p e n e d a n d f r e e s o f t w a r e L i n u x i s c o m p a ti b l e t h a l l k i n d s o f U N IX s t a n d a r d s l i k e P O S IX,U N IX s y s t e m V and B S D U N IX,e t c t h a t i s t o s a y the L i n u x o w n s a c o mp a ti b l e mu l ti u s e r s,mu l ti t a s k s sop h i s ti c a t e d e m b e d d e d o p e r a t i n g s y s t e rnT h e n e t w o r k p r o g r a m m i n g u n d e r L i n u x h a s f o u n d w i d e a p p l i c a ti o n s Th e p a p e r w i l l p r e sen t s the b asi c c o n c e p t and f u n c ti o n rec a l l i n g o f the S o c k e t u n d e r L i n u x Ke y w o r d s:s o c k e t c o nn e c t l i s t e n a c c e p t c l o se rea d w r i t e S o c k e t(套接字)是通过标准的U N IX文件描述符和其它程序通信的一个方法。每一个 套接字都用一个半相关描述;协议,本地地址、本地端口来表示;一个完整的套接字则 用一个相关描述:协议,本地地址、本地端口、远程地址、远程端口,每一个套接字都 有一个本地的由 操作系统分配的唯一的套接字号。S o c k e t 的三种类型:流式S o c k e t(S O C K S T R E A M),提供可靠、面向连接的通信流,使用T C P 协议,保证了数据传输的正确性和 顺序;数据报S o c k e t(S O C K D G R A M),它定义了 一种无连接的服务,数据通过相互独立的 报文进行传输,是无序的,不保证可靠、无差错。它使用数据报协议U D P 协议;原始S o c k e t,它允许对底层协议如I P 或I C M P 直接访问,它功能强大但使用较为不便,主要用于一些 协议的开发。首先调用基本函数s o c k e t()创建一个套接字,函数为i n t s o c k e t(in t d o m a i n,in t t y p e,作者系熊猫军通四 部助理工程师 作者系熊猫军通四 部助理工程师 作者系熊猫军通四部助理工程师 维普资讯 http:/ 5 2 通信与广播电 视 2 0 0 5 年第2 期 in t p r o t o c o 1),其中参数d o m a i n 指定要创建的套接字的协议族,可以是如下值:A F U N I X (U N I X域协议族,本机的进程间通信时使用),A F I N E T(In t e m e t 协议族(T C P I P),A F I S O(I S O 协议族);参数t y p e 指定套接字类型,可以是如下值:S O C K S T R E A M(流套接 字,面向连接的和可靠的通信类型),S O C K D G R A M(数据报套接字,非面向连接的和不 可靠的通信类型),S O C K _ R A W(原始套接字,只对I n t e m e t 协议有效,可以用来直接访问 I P 协议);参数p ro t oc o l 通常设置成0,表示使用默认协议,如I n t e r n e t 协议族的流套接字使 用T C P 协议,而数据报套接字使用U D P 协议。函数c o n n e c t()定义为i n t c o nne c t(i n t s o c k f d,s t r u c t s o e k a d d r jIc s e r v a d d r,in t a d d r l e n)参数s o c k f d 是函数s o c k e t 返回的套接字描述符;参数s e r v a d d r 指定远程服务器的套接字地 址,包括服务器的I P 地址和端口 号;参数a d d r l e n 指定这个套接字地址的长度。成功时返回 0,否则返回一 1。在调用函数 c o n n e c t 之前,客户机需要指定服务器进程的套接字地址。客 户机一般不需要指定自己的 套接字地址(I P 地址和端口 号),系统会自动从1 0 2 4 至5 0 0 0的 端口 号范围内为它选择一个未用的端口 号,然后以这个端口号和本机的I P 地址填充这个套 接字地址。客户机调用函数c o n n e c t 来主动建立连接。这个函数将启动T C P 协议的3 次握手 过程。在建立连接之后或发生错误时函数返回。函数b i n d()将本地地址与套接字绑定起来,函数定义为in t b i n d(i n t s oc k f d,s t r u c t s o c k a d d r jIc m y a d d r,i n t a d d r l e n);参数s o c k f d 是函数s o c k t 返回的套接字描述符;参数m y a d d r 是本地地址;参数a d d r l e n 是套接字地址结构的长度。执行成功时返回0,否则返回一 1。服 务器和客户机都可以调用函 数 b i n d 来绑定套接字地址,但一般是服务器调用函数 b i n d 来绑 定自己的公认端口 号。一般只有在主机有多个网络设备接口 时使用。我们一般不在客户机上 使用固 定的客户机端口号,除非是必须使用的情况。函数l i s t e n()将一个套接字转换为征听套接字,定义为:i n t l i s t e n(i n t s o c k f d,i n t b a c k l o g),参数s o c k f d 指定要转换的套接字描述符,参数b a c k l o g 设置请求队列的最大长度,执行成功时返回0,否则返回一 1。函数a c c e p t()从征听套接字的完成队列中接收一个已经建立起来的T C P 连接。如果 完成连接队列为空,那么这个进程睡眠。定义为i n t a c c e p t(i n t s o c k f d,s t r u c t s oc k a d d r$a d d r,i n t jIc a d d r l e n),参数s o c k f d 指定征听套接字描述符;参数a d d r 为指向一个I n te r n e t 套接 字地址结构的指针;参数a d d r l e n 为指向一个整型变量的指针。执行成功时,返回3 个结果:函 数返回 值为一个新的 套接字描述符,标识这个接收的连接;参数a d d r 指向的结构变量中 存储客户机地址;参数a d d r l e n 指向的整型变量中 存储客户机地址的长度。失败时返回一 1。征听套接字专为接收客户连接请求,完成3 次握手操作而用的,所以T C P 协议不能使用征 听套接字描述符来标识这个连接,于是T C P 协议创建一个新的套接字来标识这个要接收的 连接,并将它的描述符发送给应用程序。现在有两个套接字,一个是调用函数a c c e p t 时使用 的 征听套接字,另一个是函数a c c e p t 返回的连接套接字(c o n n e c t e d s o c k e t)。一个服务器通 常只需创建一个征听套接字,在服务器进程的整个活动期间,用它来接收所有客户机的连接 请求,在服务器进程终止前关闭这个征听套接字;对于每一个接收的(a c c e p t e d)连接,T C P 协议都创建一个新的连接套接字来标识这个连接,服务器使用这个连接套接字与客户机 进行通信操作,当服务器处理完这个客户机请求时,关闭这个连接套接字。函数c l o s e()关闭一个套接字描述符。定义为in t c l o s e(in t s o e k f d);执行成功时返回 维普资讯 http:/ 2 0 0 5 年第2 期 通信与广播电视 5 3 0,否则返回一 1。它将套接字描述符的引用计数器减1,如果描述符的引用计数大于0,则 表示还有进程引用这个描述符,函数c l o s e 正常返回;如果为0,则启动清除套接字描述符 的操作,函数c l o s e 立即正常返回。调用c l o s e 之后,进程将不再能够访问这个套接字,但 T C P 协议将继续使用这个套接字,将尚未发送的数据传递到对方,再执行关闭操作,一直等 到这个T C P 连接完全关闭之后,T C P 协议才删除该套接字。函数r e a d()和w r i t e()用于从套接字读写数据。定义为:in t r e a d(i n t f d,c h a r b u f,i n t l e n)和i n t w r i te(i n t f d,c h ar b u f,i n t l e n);函 数执行成功时,返回 读或写的数据 量的大小,失败时返回一 1。每个T C P 套接字都有两个缓冲区:套接字发送缓冲区、套接字 接收缓冲区,分别处理发送和接收任务。从网络读、写数据的操作是由T C P 协议在内核中 完成的:T C P 协议将从网络上接收到的数据保存在相应套接字的接收缓冲区中,等待用户调 用函数将它们从接收缓冲区 拷贝到用户缓冲区;用户将要发送的数据拷贝到相应套接字的发 送缓冲区中,然后由T C P 协议按照一定的算法处理这些数据。读写连接套接字的操作与读 写文件的操作类似,也可以 使用函 数r e a d 和w ri t e。函数r e a d 完成将数据从套接字接收缓冲 区拷贝到用户缓冲区:当套接字接收缓冲区有数据可读时,立即返回 实际读到的数据量;当 无数据可读时,函数re a d 将阻塞不返回,等待数据到达。函数w r i te 完成将数据从用户缓冲 区拷贝到套接字发送缓冲区的任务:到套接字发送缓冲区有足够拷贝所有用户数据的空间 时,函数w r i t e 将数据拷贝到这个缓冲区中,如果可用空间小于w r i t e 参数l e n 指定的大小时,函数w r i te 将阻塞不返回,等待缓冲区有足够的空间。以上函数应用时都要引用文件#i n c l u d e 和#in c l u d e 。网络S o c k e t 应用模式:C S(C l i e n t 一 客户 S e r v e r 服务器)方式。T C P 通信模式见图1。S e r v e r(r u I I I I i n g O I I h o s t i d)Cl i E 1 n t (,I e al e S O(k el p o I l x f oI i n c o m i n g I e(|l l e S t:w E 1 l c o m e g o c k el S e F v e r S o c k e t()(1 I e at P s o c k et w ai l f oI i n c o mi n g (O n l l(c l l o h o s l i dp o 1 1 x C O l l|e c1 i o n r e(|n e s l L o(、a1 h o s t i d I)t)c o n n e cl i o l l S o c k el cl i e n t S o c k e l w e 1 c o m e S o c k e 1 a c c e p l()S o c k e t f)T I l 0 r e a d J r 1 e a d r e I u e st t r 0 m 一s e n d r e(1 l t e s l I 1 i n g c o n n e ct i O I I,O C k eI c1 i e I 1 1 S e e kPl +I r l1Y l 0 a fI i e r e pl v t o I r 0 I 1 n E 1 c l i 0 n 0 c k P -r I 1 a d r E 1 D l y f r 0 m Jr !“。C1 o s e (、o l l l l(l I o n s e l l I p r1 o s P r 0 I I I I t-l i )I l O c k l f、1 i e I 1 t S e e k el 图 1 维普资讯 http:/ 通信与广播电视 2 0 0 5 年第2 期 U D P 通信模式见图2。S e r v e r(r u I I n i n g o n h o s t i d)c I f f l t(1 s o c k et p o l t x f o l i ll C O mi n g I e q n e s t:(:l i e|l t J CY e al I-s o c k e t cl i e l 1 t S o c k et=1)a I a g l、a m S o c k e t()图2 t i d p ol t:x st 网络程序设计全靠对套接字函数的操作。上文主要讲述了L i n u x 下S o c k e t 的基本概念及 S o c k e t 所涉及到的T C P 常识。参考文献 1 汪信道编注 L i n u x 网络编程 人民邮电出版社 2 谢希仁编著 计算机网络 大连理工大学出版社 3 蒋东兴 林鄂华编注 网络程序设计指南 清华大学出版社 4 A n d r e w s T a n e n b a u m P r e n ti c e H a l l C o m p u t e r N e t w o r k s,F o u r t h E d i ti o n)l llI1 114,1 II 11 l I II 11I I1 1 I I III 11 II 11 l I II I11II 11 II I11 II 11 II1 1I I1 1 川III I11 II 11 II1 1 川IlII I11 I I川lI II 111 1 lIII 1-(上接第4 2页)五、结束语 流星的作用就相当于一个“天然卫星”。但是,它不像卫星通信那样需要昂贵的发射费 用,也不存在维修和保养的问题。因此,建立一个流星余迹通信系统,其费用只有建立承担 同 样任务的卫星通信系统的几分之一。目 前,英、美等国的 研究人员正在建设一个覆盖西欧 和部分东欧国家的流星通信网,探讨最终以流星余迹通信代替卫星通信的可能性。我国有关 部门也在研制,已有样机进入试验阶段。发展和研制我们自己的流星余迹通信系统,对保证 我国整个军、民用通信网的完整性也有很大的意义。参考文献 M H 阿隆耐(前苏联)流星余迹通信1 9 6 4 年2 月第1 版s s 号:1 0 1 8 6 3 4 0 维普资讯 http:/

    注意事项

    本文(Linux下网络Socket编程技术.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开