linux常用c函数 接口处理篇

linux常用c函数 接口处理篇

ID:15823047

大小:92.50 KB

页数:28页

时间:2018-08-05

linux常用c函数 接口处理篇_第1页
linux常用c函数 接口处理篇_第2页
linux常用c函数 接口处理篇_第3页
linux常用c函数 接口处理篇_第4页
linux常用c函数 接口处理篇_第5页
资源描述:

《linux常用c函数 接口处理篇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

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

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

4、的数据结构 structsockaddr { unsignedshortintsa_family; charsa_data[14]; }; sa_family为调用socket()时的domain参数,即AF_xxxx值。 sa_data最多使用14个字符长度。 此sockaddr结构会因使用不同的socketdomain而有不同结构定义,例如使用AF_INETdomain,其socketaddr结构定义便为 structsocketaddr_in { unsignedshortintsin_family; uint16_tsin_por

5、t; structin_addrsin_addr; unsignedcharsin_zero[8]; }; structin_addr { uint32_ts_addr; }; sin_family即为sa_family sin_port为使用的port编号 sin_addr.s_addr为IP地址 sin_zero未使用。 参数addrlen为sockaddr的结构长度。 返回值成功则返回0,失败返回-1,错误原因存于errno中。 错误代码EBADF参数sockfd非合法socket处理代码。 EACCESS权限不足 ENOTSOCK

6、参数sockfd为一文件描述词,非socket。 范例参考listen() connect(建立socket连线) 相关函数socket,bind,listen 表头文件#include #include 定义函数intconnect(intsockfd,structsockaddr*serv_addr,intaddrlen); 函数说明connect()用来将参数sockfd的socket连至参数serv_addr指定的网络地址。结构sockaddr请参考bind()。参数addrlen为sockaddr的结构长度。 返回值成功则返回0

7、,失败返回-1,错误原因存于errno中。 错误代码EBADF参数sockfd非合法socket处理代码 EFAULT参数serv_addr指针指向无法存取的内存空间 ENOTSOCK参数sockfd为一文件描述词,非socket。 EISCONN参数sockfd的socket已是连线状态 ECONNREFUSED连线要求被server端拒绝。 ETIMEDOUT企图连线的操作超过限定时间仍未有响应。 ENETUNREACH无法传送数据包至指定的主机。 EAFNOSUPPORTsockaddr结构的sa_family不正确。 EALREA

8、DYsocket为不可阻断且先前的连线操作还未完成。 范例/*利用socket的TCPclient 此程序会连线TCPserver,并将键盘输入的字符串传送给server。 TCPserver

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。