多个socket使用同一端口
来源:互联网 发布:win7 windows无法访问 编辑:程序博客网 时间:2024/05/19 13:56
突然想到多个socket能不能绑定同一个端口?度娘不给力,自己做实验,结论如下:
1. 如果设置SO_REUSEADDR,就是端口复用,只有一个socket能收到,毕竟只有一块肉嘛,给那个socket,另一个必然要饿肚子,除非有copy机制。
int opt = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
端口复用真正的用处主要在经常会碰到端口尚未完全关闭的情况,这时如果不设置端口复用,则无法完成绑定,因为端口还处于被别的套接口绑定的状态之中。
2.如果不设置SO_REUSEADDR,那么在运行时就会报“Address already in use”
总得来看,想要多个socket都能通过一个端口拿数据是实现不了的,除非除非端口数据可以copy....
错误集合(待补充...)
1. 出现“Transport endpoint is not connected”
让我们来回顾一下tcp socket连接过程
client: socket -> connect -> send/recv -> close
server: socket -> bind -> listen -> accept -> recv/send -> close
由socket函数返回的fd是个主动连接的套接字,接着调用connect,便可以主动连接其它的端口,但如果我们希望该套接字转为被动接收,则需要把这种主动连接状态改为被动连接状态,我们可以调用listen来进行这一转换,之后我们再调用accept从套接字流中取出一个请求并创建一个新的fd,该fd我们就可以用来接收数据。
udp socket连接过程
client: socket -> connect -> send/recv -> close
server: socket -> bind -> recv/send -> close
上述两个过程不能混淆,否则便有如上错误。
- 多个socket使用同一端口
- 多个socket使用同一端口
- JBOSS同一端口配置多个域名
- 多activity使用同一socket
- Socket编程服务器和客户端(多个客户端可以同时连接一个服务器的同一端口)
- Socket编程服务器和客户端(多个客户端可以同时连接一个服务器的同一端口)
- Socket编程服务器和客户端(多个客户端可以同时连接一个服务器的同一端口)
- 同一Tomcat 多个端口部署不同的项目
- 同一台MySQL服务器启动多个端口
- 同一Tomcat 多个端口部署不同的项目
- 同一Tomcat 多个端口部署不同的项目
- apache同一台机80端口部署多个站点
- 同一Tomcat 多个端口部署不同的项目
- 同一台服务器部署多个tomcat时端口修改
- 同一端口如何区分不同的Socket
- 同一端口如何区分不同的Socket
- 同一端口如何区分不同的Socket
- 同一端口如何区分不同的Socket
- Flex刷新当前页面和关闭浏览器
- 图像傅里叶变换的物理意义
- Facebook如何实现PB级别数据库自动化备份
- WebRTC在Chrome浏览器里的演示例子
- MFC--CToolBar
- 多个socket使用同一端口
- Js获取当前日期时间及其它操作
- Linux终端使用技巧
- java 的 byte[] 和 String互转
- Visual C++ engine is not properly installed 解决方案
- 排序方法总结(2)插入排序
- 编程珠玑(2)第一章学习之位图排序
- ABAP 数据字典中的参考表和参考字段是干什么的
- 掌握 Linux 调试技术