快速业务通道

Linux下C编程(2)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-24

【8】socket 开发 在Linux下使用C开发的应用通常都是网络应用,如果带有界面的以前都是使用QT,现在流行Android.底层应用通常大部分都是嵌入式网络应用,这些网络应用一般基于TCP/IP协议.GLIBC为网络开发提供了一个抽象概念:Socket.Socket是一个标准的UNIX文件描述符,通常一个抽象的通信端口使用这个文件描述符进行数据读写.可以通过查看进程打开的FD文件方式查看一个进程打开了多少个SOCKET,并且也这个可以通过uliimit -n来设置打开的文件描述符数量来达到限制的SOCKET数量.如下所示,可以通过进程ID号来查看描述符.

root@2003:# ps -ef|grep Sec
root 4591 1 0 Dec05 ? 00:00:00 /usr/bin/SecurityMgr
root 25247 12281 0 13:22 ttyMM0 00:00:00 grep Sec
root@2003:# ls -l /proc/4591/fd/
total 28
lr-x------ 1 root root 64 Dec 9 10:03 0 -> /dev/null
lrwx------ 1 root root 64 Dec 9 10:03 10 -> socket:[10468]
lrwx------ 1 root root 64 Dec 9 10:03 11 -> socket:[10475]
lrwx------ 1 root root 64 Dec 9 10:03 12 -> socket:[10476]
lrwx------ 1 root root 64 Dec 9 10:03 13 -> socket:[10479]
lrwx------ 1 root root 64 Dec 9 10:03 14 -> socket:[10484]
lrwx------ 1 root root 64 Dec 9 10:03 15 -> socket:[10485]
lrwx------ 1 root root 64 Dec 9 10:03 17 -> socket:[11420]
lrwx------ 1 root root 64 Dec 9 10:03 19 -> socket:[11423]
lrwx------ 1 root root 64 Dec 9 10:03 20 -> socket:[15691]
lrwx------ 1 root root 64 Dec 9 10:03 21 -> socket:[16015]
lrwx------ 1 root root 64 Dec 9 10:03 22 -> socket:[16032]
lrwx------ 1 root root 64 Dec 9 10:03 23 -> socket:[4321948]
lrwx------ 1 root root 64 Dec 9 10:03 25 -> socket:[4328222] 拥有帝国一切,皆有可能。欢迎访问phome.net
lrwx------ 1 root root 64 Dec 9 10:03 3 -> socket:[10461]
lrwx------ 1 root root 64 Dec 9 10:03 32 -> socket:[5274]
lrwx------ 1 root root 64 Dec 9 10:03 4 -> socket:[10462]
lrwx------ 1 root root 64 Dec 9 10:03 43 -> socket:[6085]
lrwx------ 1 root root 64 Dec 9 10:03 44 -> socket:[6086]
lrwx------ 1 root root 64 Dec 9 10:03 5 -> socket:[10463]
lrwx------ 1 root root 64 Dec 9 10:03 6 -> socket:[10464]
lrwx------ 1 root root 64 Dec 9 10:03 7 -> socket:[10465]
lrwx------ 1 root root 64 Dec 9 10:03 8 -> socket:[10466]
lrwx------ 1 root root 64 Dec 9 10:03 9 -> socket:[10467]

socket是一文件描述符,对socket的操作方式有点类似于文件的处理方式.只是使用不同的函数名称.我们要获取一个socket,对服务端来说,我们接着要将这个SOCKET与对外提供的IP/PORT进行绑定.绑定之后,服务端就开始监听这个SOCKET设备上的数据,一旦有数据从KERNEL,来到,服务端新建一个ACCEPT SOCKET文件描述符,通过这个描述符设备读取数据.socket处理方式同socket的类型相关,如SOCK_STREAM通常表示是TCP方式,而SOCK_DRAGM是UDP方式.这两种方式都是要拿到sockfd但是前者是面向连接的,如下图一所示,需要维护一个连接.而后者不需要维护一个连接,会少去几个步.

从上图可以看出对每一种网络应用,其基

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号