bind端口复用(可重复绑定同ip同端口)
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
所谓绑定是指别人连接我只能通过我所绑定的端口,其实是说,你现在有这个端口开放了,人家可以连接到你的服务,也可以进行数据传输,但是也不一定要使用此端口进行传输,可能此端口只用于控制信息的传输 端口 = 端口 + Ip TCP 三元组 UDP 2元组 默认情况下,一个线程的栈要预留1M的内存空间,而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程,但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。
端口复用最常用的用途应该是防止服务器重启时之前绑定的端口还未释放。这种情况下如果设定了端口复用,则新启动的服务器进程可以直接绑定端口,直接接过前辈的枪。如果没有设定端口复用,绑定会失败,提示ADDR已经在使用中——那只好等等再重试了,麻烦!
1、当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你启动的程序的socket2要占用该地址和端口,你的程序 就要用到该选项。 (这就是我说的情况啦) 2、SO_REUSEADDR允许同一port上启动同一服务器的多个实例(多个进程)。但每个实例绑定的 IP地址是不能相同的。在有多块网卡或用IP 3、SO_REUSEADDR允许单个 进程绑定相同的端口到多个socket上,但每个socket绑定的ip地址不同。这和2很相似,区别请看UNPv1。 4、SO_REUSEADDR允许完全相同的地址和端口的重复绑定。但这只用于UDP的多播,不用于TCP。 bind的意义是将已经建立的“空白的”socket绑定在网络上让大家在需要时能够找得到。如果不是把socket绑定在自己的机器上,而是另外一台机器,无法想象在实际中将如何运作。我们先假设系统允许这么做,那么当网络上的其他用户请求你的服务时,他们找到的是另外那台机器,但是那台机器还是要设法连到你的本机上才能让你的socket接受请求并提供服务,但这岂不是多此一举?另外,使用bind并不需要去设定本机IP,只要将地址字段清零,系统就自动实现本机IP的绑定了。 该文章在 2018/2/9 1:10:40 编辑过 |
关键字查询
相关文章
正在查询... |