关于blind的疑问

来源:百度知道 编辑:UC知道 时间:2024/05/28 07:40:32
如下所示

bzero(&serveraddr,sizeof(servaddr)); /地址结构清零
serveraddr.sin_family = AF_INET; /指定使用的通讯协议族
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); /指定接受任何连接,因为服务
器不知道谁会要求连接
serveraddr.sin_port = htons(5000); /指定监听的端口
bind(listensock,(sockaddr *)&serveraddr,sizeof(serveraddr)); /给套接口邦定地


上面的程序中,在绑定之前不是已经给listensock的地址结构赋过值了吗?他应该在以后都不回变呀?怎么还需要blind呢???
关于这一点我很是不解。。。
非常感谢您细致而通俗的解释,您的一席对我对socket的理解太重要了.....我以前以为被赋值的那个地址结构就是对应与socket的地址结构,而现在根据您的解释,他应该是我们在程序中定义的临时结构(也就是您所说的a),而socket真正对应的地址结构是在创建它时系统就已经为其设置了的(也就是您所说的b),只是我们看不到而已,无法对其直接赋值,因而才需要blind.......
不知道我这种理解对不对?

首先,把IP和端口赋给地址结构
然后,把地址结构和套接口绑定
你如果还是不理解的话,举个简单例子说明原理。
int a,b;
a=5000;//相当于给地址结构赋值
b=a;//相当于把地址结构和套接口绑定
PS:要知道套接口原先是不认识这个结构的,只有绑定了,才认识。