侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 239 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

bindresvport函数用法详解

noerror
2022-10-04 / 0 评论 / 0 点赞 / 118 阅读 / 427 字 / 正在检测是否收录...

bindresvport函数用法详解

bindresvport函数简介

  • 头文件包含
#include <sys/types.h>
#include <netinet/in.h>
  • 函数定义
int bindresvport(int  sockfd , struct sockaddr_in * sin );

bindresvport函数常见使用错误

  • 编译错误
    warning: implicit declaration of function ‘bindresvport’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <sys/types.h>
#include <netinet/in.h>

bindresvport函数详细描述

bindresvport ()用于将文件描述符sockfd引用的套接字绑定到特权匿名IP端口,即从512到1023范围内任意选择的端口号。
如果bindresvport ()执行的bind (2)成功,并且sin不为NULL,那么sin->sin_port返回实际分配的端口号。
sin可以为NULL,在这种情况下sin->sin_family被隐式地取为AF_INET ,但是在这种情况下,bindresvport ()无法返回实际分配的端口号。(以后可以使用getsockname (2))获得此信息。)

bindresvport函数返回值

bindresvport ()成功时返回0;否则,返回-1并设置errno以指示错误的原因。

bindresvport函数错误码

bindresvport ()可能由于与bind (2)相同的任何原因而失败。此外,还可能出现以下错误:

  • EACCES调用进程没有特权(在Linux上:调用进程在控制其网络名称空间的用户名称空间中没有 CAP_NET_BIND_SERVICE 功能)。
  • EADDRINUSE 所有特权端口都在使用中。
  • EAFNOSUPPORT " (" EPFNOSUPPORT " in glibc 27 and earlier)" sin不是NULL,sin->sin_family不是AF_INET

bindresvport函数其他说明

与某些bindresvport ()实现不同,glibc实现忽略调用方在sin->sin_port 中提供的任何值

0

评论区