c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法
C语言listen()函数:等待连接头文件:
#include
定义函数:
int listen(int s,int backlog);
函数说明:listen()用来等待参数s 的socket 连线. 参数backlog 指定同时能处理的最大连接要求,如果连接数目达此上限则client 端将收到ECONNREFUSED 的错误. Listen()并未开始接收连线,只是设置socket 为listen 模式,真正接收client 端连线的是accept(). 通常listen()会在socket(),bind()之后调用,接着才调用accept().
返回值:成功则返回0,失败返回-1,错误原因存于errno
附加说明:listen()只适用SOCK_STREAM 或SOCK_SEQPACKET 的socket 类型. 如果socket 为AF_INET 则参数backlog 最大值可设至128.
错误代码:
EBADF 参数sockfd 非合法socket 处理代码
EACCESS 权限不足
EOPNOTSUPP 指定的socket 并未支援listen 模式.
C语言bind()函数:对socket定位头文件:
#include #include
定义函数:int bind(int sockfd,struct sockaddr * my_addr,int addrlen);
函数说明:bind()用来设置给参数sockfd 的socket 一个名称. 此名称由参数my_addr 指向一sockaddr 结构,对于不同的socket domain 定义了一个通用的数据结构
struct sockaddr
{
unsigned short int sa_family;
char sa_data[14];
};
1、sa_family 为调用socket()时的domain 参数,即AF_xxxx 值.
2、sa_data 最多使用14 个字符长度.
此sockaddr 结构会因使用不同的socket domain 而有不同结构定义,例如使用AF_INET domain,其socketaddr 结构定义便为
struct socketaddr_in
{
unsigned short int sin_family;
uint16_t sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
};
struct in_addr
{
uint32_t s_addr;
};
1、sin_family 即为sa_family
2、sin_port 为使用的port 编号
3、sin_addr. s_addr 为IP 地址 sin_zero 未使用.
参数 addrlen 为sockaddr 的结构长度.
返回值:成功则返回0,错误原因存于errno 中.
错误代码:
1、EBADF 参数sockfd 非合法socket 处理代码.
2、EACCESS 权限不足
3、ENOTSOCK 参数sockfd 为一文件描述词,非socket.
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
总结
以上是生活随笔为你收集整理的c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: c语言程序怎么颠倒数据,急求如何将下列C
- 下一篇: pat数素数 20 c语言,PAT乙级C