ImageVerifierCode 换一换
格式:DOC , 页数:29 ,大小:92.50KB ,
资源ID:6031235      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6031235.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linux常用C函数 接口处理篇.doc)为本站会员(czsj190)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Linux常用C函数 接口处理篇.doc

1、 Linux 常用 C 函数 接口处理篇accept(接受 socket 连线)相关函数 socket,bind,listen,connect表头文件 #include#include定义函数 int accept(int s,struct sockaddr * addr,int * addrlen);函数说明 accept()用来接受参数 s 的 socket 连线。参数 s 的 socket 必需先经 bind()、listen()函数处理过,当有连线进来时 accept()会返回一个新的 socket 处理代码,往后的数据传送与读取就是经由新的 socket 处理,而原来参数 s 的 s

2、ocket 能继续使用 accept()来接受新的连线要求。连线成功时,参数 addr 所指的结构会被系统填入远程主机的地址数据,参数 addrlen为 scokaddr 的结构长度。关于结构 sockaddr 的定义请参考 bind()。返回值 成功则返回新的 socket 处理代码,失败返回-1,错误原因存于 errno 中。错误代码 EBADF 参数 s 非合法 socket 处理代码。EFAULT 参数 addr 指针指向无法存取的内存空间。ENOTSOCK 参数 s 为一文件描述词,非 socket。EOPNOTSUPP 指定的 socket 并非 SOCK_STREAM。EPERM

3、 防火墙拒绝此连线。ENOBUFS 系统的缓冲内存不足。ENOMEM 核心内存不足。范例 参考 listen()。bind(对 socket 定位)相关函数 socket,accept ,connect,listen表头文件 #include#include定义函数 int bind(int sockfd,struct sockaddr * my_addr,int addrlen);函数说明 bind()用来设置给参数 sockfd 的 socket 一个名称。此名称由参数 my_addr 指向一sockaddr 结构,对于不同的 socket domain 定义了一个通用的数据结构struc

4、t sockaddrunsigned short int sa_family;char sa_data14;sa_family 为调用 socket()时的 domain 参数,即 AF_xxxx 值。sa_data 最多使用 14 个字符长度。此 sockaddr 结构会因使用不同的 socket domain 而有不同结构定义,例如使用 AF_INET domain,其 socketaddr 结构定义便为struct socketaddr_inunsigned short int sin_family;uint16_t sin_port;struct in_addr sin_addr;un

5、signed char sin_zero8;struct in_addruint32_t s_addr;sin_family 即为 sa_familysin_port 为使用的 port 编号sin_addr.s_addr 为 IP 地址sin_zero 未使用。参数 addrlen 为 sockaddr 的结构长度。返回值 成功则返回 0,失败返回-1,错误原因存于 errno 中。错误代码 EBADF 参数 sockfd 非合法 socket 处理代码。EACCESS 权限不足ENOTSOCK 参数 sockfd 为一文件描述词,非 socket。范例 参考 listen()connect

6、(建立 socket 连线)相关函数 socket,bind,listen表头文件 #include#include定义函数 int connect (int sockfd,struct sockaddr * serv_addr,int addrlen);函数说明 conn ect()用来将参数 sockfd 的 socket 连至参数 serv_addr 指定的网络地址。结构 sockaddr 请参考 bind()。参数 addrlen 为 sockaddr 的结构长度。返回值 成功则返回 0,失败返回-1,错误原因存于 errno 中。错误代码 EBADF 参数 sockfd 非合法 so

7、cket 处理代码EFAULT 参数 serv_addr 指针指向无法存取的内存空间ENOTSOCK 参数 sockfd 为一文件描述词,非 socket。EISCONN 参数 sockfd 的 socket 已是连线状态ECONNREFUSED 连线要求被 server 端拒绝。ETIMEDOUT 企图连线的操作超过限定时间仍未有响应。ENETUNREACH 无法传送数据包至指定的主机。EAFNOSUPPORT sockaddr 结构的 sa_family 不正确。EALREADY socket 为不可阻断且先前的连线操作还未完成。范例 /* 利用 socket 的 TCP client此程

8、序会连线 TCP server,并将键盘输入的字符串传送给 server。TCP server 范例请参考 listen() 。*/#include#include#include#include#include#include#include#define PORT 1234#define SERVER_IP “127.0.0.1”main()int s;struct sockaddr_in addr;char buffer256;if(s = socket(AF_INET,SOCK_STREAM,0)#include 定义函数 int sendto ( int s , const void

9、 * msg, int len, unsigned int flags, conststruct sockaddr * to , int tolen )函数说明 sendto() 用来将数据由指定的 socket 传给对方主机。参数 s 为已建好连线的socket,如果利用 UDP 协议则不需经过连线操作。参数 msg 指向欲连线的数据内容,参数flags 一般设 0,详细描述请参考 send()。参数 to 用来指定欲传送的网络地址,结构sockaddr 请参考 bind()。参数 tolen 为 sockaddr 的结果长度。返回值 成功则返回实际传送出去的字符数,失败返回1,错误原因存于

10、 errno 中。错误代码 EBADF 参数 s 非法的 socket 处理代码。EFAULT 参数中有一指针指向无法存取的内存空间。WNOTSOCK canshu s 为一文件描述词,非 socket。EINTR 被信号所中断。EAGAIN 此动作会令进程阻断,但参数 s 的 soket 为补课阻断的。ENOBUFS 系统的缓冲内存不足。EINVAL 传给系统调用的参数不正确。范例 #include #include # include#include#define PORT 2345 /*使用的 port*/main()int sockfd,len;struct sockaddr_in a

11、ddr;char buffer256;/*建立 socket*/if(sockfd=socket (AF_INET,SOCK_DGRAM,0)定义函数 void setservent (int stayopen);函数说明 setservent()用来打开/etc/services,如果参数 stayopen 值为 1,则接下来的getservbyname()或 getservbyport()将补回自动关闭文件。setsockopt(设置 socket 状态)相关函数 getsockopt表头文件 #include#include定义函数 int setsockopt(int s,int le

12、vel,int optname,const void * optval,socklen_toptlen);函数说明 setsockopt()用来设置参数 s 所指定的 socket 状态。参数 level 代表欲设置的网络层,一般设成 SOL_SOCKET 以存取 socket 层。参数 optname 代表欲设置的选项,有下列几种数值:SO_DEBUG 打开或关闭排错模式SO_REUSEADDR 允许在 bind()过程中本地地址可重复使用SO_TYPE 返回 socket 形态。SO_ERROR 返回 socket 已发生的错误原因SO_DONTROUTE 送出的数据包不要利用路由设备来传

13、输。SO_BROADCAST 使用广播方式传送SO_SNDBUF 设置送出的暂存区大小SO_RCVBUF 设置接收的暂存区大小SO_KEEPALIVE 定期确定连线是否已终止。SO_OOBINLINE 当接收到 OOB 数据时会马上送至标准输入设备SO_LINGER 确保数据安全且可靠的传送出去。参数 optval 代表欲设置的值,参数 optlen 则为 optval 的长度。返回值 成功则返回 0,若有错误则返回-1,错误原因存于 errno。附加说明 EBADF 参数 s 并非合法的 socket 处理代码ENOTSOCK 参数 s 为一文件描述词,非 socketENOPROTOOPT

14、 参数 optname 指定的选项不正确。EFAULT 参数 optval 指针指向无法存取的内存空间。范例 参考 getsockopt()。shutdown(终止 socket 通信)相关函数 socket,connect表头文件 #include定义函数 int shutdown(int s,int how);函数说明 shutdown()用来终止参数 s 所指定的 socket 连线。参数 s 是连线中的 socket 处理代码,参数 how 有下列几种情况 :how=0 终止读取操作。how=1 终止传送操作how=2 终止读取及传送操作返回值 成功则返回 0,失败返回-1,错误原因存

15、于 errno。错误代码 EBADF 参数 s 不是有效的 socket 处理代码ENOTSOCK 参数 s 为一文件描述词,非 socketENOTCONN 参数 s 指定的 socket 并未连线socket(建立一个 socket 通信)相关函数 accept,bind,connect,listen表头文件 #include#include定义函数 int socket(int domain,int type,int protocol);函数说明 socket()用来建立一个新的 socket,也就是向系统注册,通知系统建立一通信端口。参数 domain 指定使用何种的地址类型,完整的定

16、义在/usr/include/bits/socket.h 内,底下是常见的协议:PF_UNIX/PF_LOCAL/AF_UNIX/AF_LOCAL UNIX 进程通信协议PF_INET?AF_INET Ipv4 网络协议PF_INET6/AF_INET6 Ipv6 网络 协议PF_IPX/AF_IPX IPX-Novell 协议PF_NETLINK/AF_NETLINK 核心用户接口装置PF_X25/AF_X25 ITU-T X.25/ISO-8208 协议PF_AX25/AF_AX25 业余无线 AX.25 协议PF_ATMPVC/AF_ATMPVC 存取原始 ATM PVCsPF_APPL

17、ETALK/AF_APPLETALK appletalk(DDP )协议PF_PACKET/AF_PACKET 初级封包接口参数 type 有下列几种数值:SOCK_STREAM 提供双向连续且可信赖的数据流,即 TCP。支持OOB 机制,在所有数据传送前必须使用 connect()来建立连线状态。SOCK_DGRAM 使用不连续不可信赖的数据包连接SOCK_SEQPACKET 提供连续可信赖的数据包连接SOCK_RAW 提供原始网络协议存取SOCK_RDM 提供可信赖的数据包连接SOCK_PACKET 提供和网络驱动程序直接通信。protocol 用来指定 socket 所使用的传输协议编号

18、,通常此参考不用管它,设为 0 即可。返回值 成功则返回 socket 处理代码,失败返回-1。错误代码 EPROTONOSUPPORT 参数 domain 指定的类型不支持参数 type 或 protocol 指定的协议ENFILE 核心内存不足,无法建立新的 socket 结构EMFILE 进程文件表溢出,无法再建立新的 socketEACCESS 权限不足,无法建立 type 或 protocol 指定的协议ENOBUFS/ENOMEM 内存不足EINVAL 参数 domain/type/protocol 不合法范例 参考 connect()。【已有 1 位网友发表了看法】 【打印】 【

19、关闭】相关评论作者: js001sdx 发布日期: 2009-9-29好文共有评论数 1/每页显示数 10我要评论发表评论,与各位同人交流。 我要评论 热点主题 Linux 下的多进程编程初步 Linux 下的软件开发 Unix(Linux)C 编程问题精粹 Linux 和 Unix 安全编程:环境变量 Linux 核心编译 (kernel) 在硬碟建置 Linux 系统之 setup 启动 Java 桌面应用程序设计:SWT 简介 基于 Linux 的网络数据帧捕获方法与思考 关于 C+代码优化的方法总结 编写适用于模拟器的 Linux 代码最新主题 基于 Linux 的网络数据帧捕获方法与

20、思考 在硬碟建置 Linux 系统之 setup 启动 Linux 和 Unix 安全编程:环境变量 Linux 下的多进程编程初步 Unix(Linux)C 编程问题精粹 编写适用于模拟器的 Linux 代码 在 Linux 环境 Python 下开发全文索引 Linux 核心编译 (kernel) 关于 C+代码优化的方法总结 Linux 下的软件开发关注热点Linux 紧张辩论和全球近 40 万 Linux 爱好者热讨当今最热门的开源话题,寻找同城 Linux 人,发表你的见解. 最新主题与激烈辩论主题,5 分钟前由系统自动更新! 24 小时热点 Top20 与一周热点 Top20 主题,15 分钟前由系统自动更新!下载 1000 部免费 Linux 教程,参与 Linux 社区文档的建设.各省 Linux 人:北京 上海 天津 重庆 广东 湖北四川 安徽 湖南 河北 江西 河南陕西 山东 福建 江苏 浙江 山西吉林 辽宁 广西 宁夏 甘肃 贵州云南 新疆 西藏 青海 台湾 海南香港 澳门 内蒙古 黑龙江Linux 精华文档 Linux 同城人(交友)全国大学校园 Linux 人热门栏目推荐: Linux 业界新闻合作 | 关于我们 | 联系我们 | 导航 | 会员注册2010 红联 Powered by SupSite

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报