socket中bind函数绑定的IP是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket中bind函数绑定的IP是啥相关的知识,希望对你有一定的参考价值。

参考技术A 所谓bind,就是指绑定本地接受端口。
指定ip,是为了分辨多ip主机。
bind是服务端调用的函数,绑定的是服务端的IP,假设服务端有多个网卡,即会有多个IP,这个时候我们可以选择用bind绑定其中一个IP,那么服务端只接收该IP上某端口的数据。
如果bind绑定的是INADDR_ANY,即表示所有发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都由这个服务端进程进行处理。
参考技术B bind是服务端调用的函数,绑定的是服务端的IP,假设服务端有多个网卡,即会有多个IP,这个时候我们可以选择用bind绑定其中一个IP,那么服务端只接收该IP上某端口的数据。
如果bind绑定的是INADDR_ANY,即表示所有发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都由这个服务端进程进行处理。
参考技术C 无连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。
有连接的socket客户端通过调用connect函数在socket数据结构中保存本地和远端信息,无须调用bind(),因为这种情况下只需知道目的机器的ip地址,而客户通过哪个端口与服务器建立连接并不需要关心,socket执行体为你的程序自动选择一个未被占用的端口,并通知你的程序数据什么时候打开端口。(当然也有特殊情况,linux系统中rlogin命令应当调用bind函数绑定一个未用的保留端口号,还有当客户端需要用指定的网络设备接口和端口号进行通信等等)总之:
1.需要在建连前就知道端口的话,需要
bind
2.需要通过指定的端口来通讯的话,需要
bind

websocket 函数

  • 函数名 描述

  • socket_accept() 接受一个Socket连接

  • socket_bind() 把socket绑定在一个IP地址和端口上

  • socket_clear_error() 清除socket的错误或最后的错误代码

  • socket_close() 关闭一个socket资源

  • socket_connect() 开始一个socket连接

  • socket_create_listen() 在指定端口打开一个socket监听

  • socket_create_pair() 产生一对没有差别的socket到一个数组里

  • socket_create() 产生一个socket,相当于产生一个socket的数据结构

  • socket_get_option() 获取socket选项

  • socket_getpeername() 获取远程类似主机的ip地址

  • socket_getsockname() 获取本地socket的ip地址

  • socket_iovec_add() 添加一个新的向量到一个分散/聚合的数组

  • socket_iovec_alloc() 这个函数创建一个能够发送接收读写的iovec数据结构

  • socket_iovec_delete() 删除一个已分配的iovec

  • socket_iovec_fetch() 返回指定的iovec资源的数据

  • socket_iovec_free() 释放一个iovec资源

  • socket_iovec_set() 设置iovec的数据新值

  • socket_last_error() 获取当前socket的最后错误代码

  • socket_listen() 监听由指定socket的所有连接

  • socket_read() 读取指定长度的数据

  • socket_readv() 读取从分散/聚合数组过来的数据

  • socket_recv() 从socket里结束数据到缓存

  • socket_recvfrom() 接受数据从指定的socket,如果没有指定则默认当前socket

  • socket_recvmsg() 从iovec里接受消息

  • socket_select() 多路选择

  • socket_send() 这个函数发送数据到已连接的socket

  • socket_sendmsg() 发送消息到socket

  • socket_sendto() 发送消息到指定地址的socket

  • socket_set_block() 在socket里设置为块模式

  • socket_set_nonblock() socket里设置为非块模式

  • socket_set_option() 设置socket选项

  • socket_shutdown() 这个函数允许你关闭读、写、或指定的socket

  • socket_strerror() 返回指定错误号的周详错误

  • socket_write() 写数据到socket缓存

  • socket_writev() 写数据到分散/聚合数组

 

以上是关于socket中bind函数绑定的IP是啥的主要内容,如果未能解决你的问题,请参考以下文章

socket的bind函数是否只能绑定本地IP,不能绑定外网IP么

socket编程中为啥client端的可以不用bind函数绑定.而客户端必须呢?

socket编程bind()函数

bind()与connect()——计网中socket的使用

websocket 函数

Go 语言网络编程系列— Socket 编程入门:Dial 函数及其使用