一、函数原型

#include <sys/socket.h>
int bind (int __fd, const struct sockaddr * __addr, socklen_t __len)

该函数调用之前,必创建 socket ,在 linux 内核中,socket 描述符映射为 struct socket ,该结构体中包含了该 socket 所需要的所有信息,包括 server 和 client 的 ip 和 port 等。

当通过函数 socket 创建 socket 描述符之后,实际上该描述字对应的结构体里面是没有内容的,所以为了让该 socket 动起来,就得将该结构体中所缺失的内容附上,该功能的实现 api 就是 bind 。

二、参数详解

1、__fd

socket 函数返回的描述字,指定被绑定的 socket 。

2、__addr

保存地址(ip + port 或者 绝对路径)信息的结构。包括一下三种:

(1)sockaddr

struct sockaddr
{uint16_t sa_family;    char sa_data[14];
};

一般不直接使用,而是用它的变体 sockaddr_in 和 sockaddr_un 。

(2)sockaddr_in

struct sockaddr_in
{//协议族uint16_t sin_family;//端口号(网络字节序)uint16_t sin_port;  //IP 地址(网络字节序)uint32_t s_addr;  //为了保持与 struct sockaddr 结构体大小相等,故填充之用。unsigned char sin_zero[8];
};

协议族是 AF_INET 并且 socket 的类型是 SOCK_STREAM 和 SOCK_DGRAM 时使用。

(3)sockaddr_un

struct sockaddr_un
{uint16_t sun_family;// 绝对路径。char sun_path[108];
};

协议族是 AF_UNIX 时使用。

3、__len

标示实际使用的存储地址信息的结构的大小,例如:

sizeof(sockaddr_in)
sizeof(sockaddr_un)

三、返回值

成功返回0,失败返回 -1 ,并置 errno 。

(SAW:Game Over!)

linux socket API / bind相关推荐

  1. python封装api linux_python Socket编程-python API 与 Linux Socket API之间的关系

    python socket编程 by SA19225409 地址协议家族 Python 支持 AF_UNIX. AF_NETLINK. AF_TIPC 和 AF_INET 家族 AF_UNIX 基于本 ...

  2. api有哪些 javasocket_Java Socket编程以及与Linux Socket API关系

    Socket 编程(基于Linux) Socket独立于具体协议的网络编程接口,在ISO模型中,主要位于会话层和传输层之间:在通用的计算机网络五层模型中,主要位于应用层和传输层之间. Linux So ...

  3. api有哪些 javasocket_简单hello/hi程序、分析及Java Socket API与Linux Socket API对比

    1.Socket 定义 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开.读写和关闭等操作.套接字允许应用程序将I/O插入到网络中,并与网络中的其他应 ...

  4. Linux Socket API Connect 函数详解

    在讲解套接字编程函数之前,有必要对socket编程的两个不可或缺的结构体进行说明. 第一个结构体式struct sockaddr..这个结构为许多类型的套接字储存套接字地址信息: Sockaddr结构 ...

  5. linux socket API / listen() 两个队列以及第 2 个参数的作用

    1.SYN 队列,当 Server 接收到 SYN 时,就将该 socket 放入了 SYN 队列中,即:未完成连接队列. 2.Accept 队列,当 Server 发送完 SYN + ACK 之后, ...

  6. linux socket API / socket

    一.函数原型 #include <sys/socket.h> int socket (int __domain, int __type, int __protocol) 功能:实现一个通信 ...

  7. Linux Socket接口使用方法

    Linux内核net/socket.c定义了一套socket的操作api.图1展示了socket层所处与TCP/IP协议栈之上和应用层之下. socket()函数 socket函数对应于普通文件的打开 ...

  8. php socket keepalive,linux keepalive探测对应用层socket api的影响

    问题 大部分人都知道tcp的keepalive. 假设读者知道keepalive会如何触发. 这篇文章想讨论keepalive触发后, 对socket使用者的影响. keepalive设置 修改/et ...

  9. Linux网络编程——socket、bind、listen、accpet、connect、read和write

    Linux网络编程 基础理论 1.TCP/UDP/端口号 2.字节序 一.socket服务器与客户端的开发步骤 二.具体使用步骤 1.socket(创建连接协议) 2.bind(地址准备好) 3.li ...

最新文章

  1. 获取收藏夹路径的C++代码
  2. 如何设置 jqplot 图表插件的标题图例和直线
  3. 解决cannot import name ‘finance‘ from ‘matplotlib‘报错与问题解析
  4. Linux Apache服务详解——用户个人主页实战
  5. Pandas系列(十二)实现groupby分组统计
  6. 分布式通信-tcp/ip 单播
  7. 2020软件测试学科全套上课视频教程网盘免费分享
  8. pytest+seleniumUI自动化框架设计
  9. 微信小程序分享朋友圈API限制问题
  10. PLsql oracle 误删除 恢复
  11. C - One-dimensional Japanese Crossword CodeForces - 721A
  12. android录制amr音频文件,android – 以AMR文件格式录制音频
  13. 远程桌面连接时无法访问远程计算机的计算机属性提示系统调用失败,远程过程调用失败【应对技巧】...
  14. Python自学笔记————字符串
  15. 并查集应用-判断亲戚关系
  16. 面试官:Java8 lambda 表达式 forEach 如何提前终止?
  17. LL(1)语法分析器
  18. sourcetree 与 命令对比
  19. 域控的创建与软件分发
  20. win8系统U盘安装办法

热门文章

  1. ORA-12545: Connect failed because target host or object does not exist
  2. linux基础及常用命令的使用
  3. QQ2009任务栏的QQ图标怎么隐藏
  4. 两个链表生成相加链表
  5. jupyter 接受参数
  6. js中split字符串分割示例
  7. Linux安全技术和防火墙介绍
  8. Linux deepin下普通用户免密切换至root用户
  9. Scala数组元素的增加(:+)方法
  10. Python Django 一对多逆向查询示例