bind函数的用法和参数?
用socket创建网络编程接口——文件描述符。 “地方”定义了,下面就需要将socket放置在这个“地方”(TCP),将他们紧紧地捆绑在一起,用bind函数吧, 我们来看看函数原型:
int PASCAL FAR bind (SOCKET s, const struct sockaddr FAR *addr, int namelen);
第一个参数当然是待绑定的套接字啦,第二个参数是标识绑定在哪个“地方”, 第三个参数是这个“地方”的占地大小。
返回值表示绑定操作是否成功,0表示成功, -1表示不成功。函数的返回值千万不要忽视,上次就被人说了。
一般是这么调用的:
iRet = bind(sockSrv,(SOCKADDR*)&addrSrv, sizeof(SOCKADDR)); // 注意强制转换
我们来对比一下文件I/O操作和网络I/O操作: 打开一个文件后, 便可以对文件进行读写操作了, 但是, 网络I/O实际上有三个步骤来完成这个功能:
1. 打开/创建socket
2. 命名socket, 我们知道, socket名称包含”协议, ip地址, 端口号”这三个要素, 而命名就是通过调用bind函数把socket与这三个要素绑定一起来。
延伸阅读
c语言socket bind函数原型?
socket bind函数的声明:
int bind(int sockfd, struct sockaddr * my_addr, int addrlen);
什么是Unix域数据报套接字?
使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。这里所指的使用套接字实现进程间通信,是由将通信域指定为PF_UNIX来实现的。该函数的形式如下: intsocket(intdomain,inttype,intprotocol); socket函数中的domain参数用于指定通信域,domain参数取PF_UNIX时,表示创建UNIX域的套接字。使用PF_UNIX域的套接字可以实现同一机器上的不同进程间的通信。 调用bind函数实现了套接字与地址(这里是文件名)的绑定。bind函数的具体信息如下: intbind(intsockfd,conststructsockaddr*my_addr,socklen_taddrlen); 其参数my_addr为指向结构体sockaddr_un的指针,该结构体的定义如下: #defineUNIX_PATH_MAX108 structsockaddr_un{ sa_family_tsun_family;/*PF_UNIX或AF_UNIX*/ charsun_path[UNIX_PATH_MAX];/*路径名*/ }; 在该结构体中,sun_family为AF_UNIX。sun_path是套接字在文件系统中的路径名。
jQuery中的bind()函数跟on()函数有什么区别呢?
.bind()与.on()的区别:
(1)是否支持selector这个参数值。由于javascript的事件冒泡特性,如果在父元素上注册了一个事件处理函数,当子元素上发生这个事件的时候,父元素上的事件处理函数也会被触发。
如果使用on的时候,不设置selector,那么on与bind就没有区别了。
(2)on绑定的事件处理函数,对于未来新增的元素一样可以的,和delegate效果相同,而bind则不行。
(3) delegate用法与on()相同,只是参数的顺序不同:扩展资料:用于事件处理程序}).bind(this);}2.on()则实现事件X, 可以在匹配元素上绑定一个或者多个事件处理函数。
(1) 用来绑定多事件,并且为同一函数,如:$(‘div’).on(‘click mouseover’,functiоn(){//do sth})
;(2)多个事件绑定不同函数,如:$(‘div’).on({‘click’:functiоn(){//do sth},’mouseover’:functiоn(){//do sth}})
;(3)事件X,如:html:jq:$(‘#bt1’).on(‘click’,functiоn(){$(‘body’).append(”);});$(‘body’).on(‘click’,’.bt2′,functiоn(){console.log(‘这是bt2’);}
bind函数的作用?
服务器端和客户端程序的显著区别在于客户端程序不需要调用bind函数,bind函数的作用是将套接字绑定一个IP地址和端口号。
如果套接字没有使用bind函数绑定地址和端口,那么调用listen函数和connect函数的时候内核会自动为套接字绑定。由此可知,如果没有使用bind函数,也是可以的。
winsock bind函数内容?
bind函数只能用于还没有连接的socket,即只能在connect或者listen之前调用
一个socket只能调用一次bind
所以socket一旦bind就不能在改变了.
bind函数可以用于TCP和UDP
一个socket的名字由地址族,主机地址,标识应用程序的端口号组成
socket函数指定一个地址族,bind函数则指定地址跟端口号
传入的sockaddr中的sin_addr用于指定bind的地址,选择ADDR_ANY让socket bind到任何本机地址
这适合于多个网卡,或者多个ip地址的主机
传入的sockaddr中的port指定bind的端口,如果port为零,则系统会随机赋予1024到5000的端口号.
不推荐客户端使用具体的端口号进行bind,因为可能会跟其它应用程序冲突
对于具体的socket,当bind执行成功后还可以通过getsockname得到与socket相关联的地址
但是如果bind时使用的地址是ADDR_ANY,则只能在socket接收到连接时,才能获得该地址
JS中函数的使用方法?
1、bind()函数会创建一个新函数,新函数与被调函数具有相同的函数体。
2、当目标函数被调用时this值绑定到bind()的第一个参数,该参数不能被重写。绑定函数被调用时,bind()也接受预设的参数提供给原函数。
参数thisArg:
调用绑定函数时作为 this 参数传递给目标函数的值。 如果使用new运算符构造绑定函数,则忽略该值。当使用 bind 在 setTimeout 中创建一个函数(作为回调提供)时,作为 thisArg 传递的任何原始值都将转换为 object。如果 bind 函数的参数列表为空,或者thisArg是null或undefined,执行作用域的 this 将被视为新函数的 thisArg。