为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦大佬指点一下,关于SOCKET编程中的bind函数的作用!谢谢!

麻烦大佬指点一下,关于SOCKET编程中的bind函数的作用!谢谢!

白衣染霜花 2021-10-12 20:11:59
书上写:bind方法将本机地址关联到套接字上,这句话到底是什么意思?为什么服务器上要关联,客户端上却不要关联。关联到低是哪两个东西之间建立联接呀,总感觉这个方法莫名其妙,但是程序里面却又总是出现,望指点。如果能有关于sokcet常 用API函数的详细介绍就最好了,可以复制网页,但最好用自己的话给偶讲下,大段的文字直接复制就不用了。
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

socket编程中的bind()函数把IP地址端口相关信息和套接字相互关联起来。

使用格式
#include <sys/types.h>
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr,socklen_t *addrlen);

功能描述
当用socket()函数创建套接字以后,套接字在名称空间(网络地址族)中存在,但没有任何地址给它赋值。bind()把用addr指定的地址赋值给用文件描述符代表的套接字sockfd。addrlen指定了以addr所指向的地址结构体的字节长度。一般来说,该操作称为“给套接字命名”。
通常,在一个SOCK_STREAM套接字接收连接之前,必须通过bind()函数用本地地址为套接字命名。
备注:
调用bind()函数之后,为socket()函数创建的套接字关联一个相应地址,发送到这个地址的数据可以通过该套接字读取与使用。
备注:
bind()函数并不是总是需要调用的,只有用户进程想与一个具体的地址或端口相关联的时候才需要调用这个函数。如果用户进程没有这个需要,那么程序可以依赖内核的自动的选址机制来完成自动地址选择,而不需要调用bind()函数,同时也避免不必要的复杂度。在一般情况下,对于服务器进程问题需要调用bind()函数,对于客户进程则不需要调用bind()函数。

查看完整回答
反对 回复 2021-10-17
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

bind就是绑定一个公共的服务地址,只有这样客户端才能找到你。打个比方,银行是不是有个为公众所知的地址,而客户却不需要那个地址,因为到时候是客户自己根据银行的地址找到银行的。

查看完整回答
反对 回复 2021-10-17
  • 2 回答
  • 0 关注
  • 297 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信