我现在只知道有两用途:
1.设置了它就可以在一个进程中多次调用Bind()函数
2.当服务器重起后连接依然有效.
我的理解正确么,还有其它的吗,能对它们解释一下么?
1.设置了它就可以在一个进程中多次调用Bind()函数
2.当服务器重起后连接依然有效.
我的理解正确么,还有其它的吗,能对它们解释一下么?
解决方案 »
- 怎样用vc++设计上位机界面,可以通过usb把示波器波形实时读取到pc上?
- 程序发布问题
- 怎么获得上网方式
- 有一段代码,VC6可以编译,在VC7下面报错误
- 为什么ExitWindowsEx不能实现关机???
- 我做的GINA DLL登录时无法正常显示自己定义的登录窗口(CDialog).请大家来帮忙!
- regsvr32.exe 做什么用的?
- MFC下OpenGL的一个技术问题
- 从年份作为函数输入参数,横向输出该年的日历(每行四个月)?
- 敬请高手进来谈谈区域增长,实在对不起没有积分了,最近正在努力赚积分,等有了一定补上!!
- 调用COM服务时是否可以摆脱".h"和"?i.c"文件?
- SetData()的问题?
2. 对于监听套接字,比较特殊。如果你定义了SO_REUSEADDR,并且让两个套接字在同一个端口上进行接听,那么对于由谁来ACCEPT,就会出现歧义。如果你定义个SO_REUSEADDR,只定义一个套接字在一个端口上进行监听,如果服务器出现意外而导致没有将这个端口释放,那么服务器重新启动后,你还可以用这个端口,因为你已经规定可以重用了,如果你没定义的话,你就会得到提示,ADDR已在使用中。
明白一些,你是说如果未设置SO_REUSEADDR, 重启后,由于端口没有释放导致绑定失败.
这样想问一下,设置SO_REUSEADDR后可在同一端口绑定两次以上么?
如:
SOCKET BindSocket1,BindSocket2.; struct sockaddr_in MyAddress;
MyAddress.sin_family =AF_INET;
MyAddress.sin_addr.sin_addr=strMyAddress;
MyAddress.sin_port =htonl(MyPort); Bind(BindSocket1,(strunct socketaddr*)MyAddress,sizeof(MyAddress))
Bind(BindSocket2,(strunct socketaddr*)MyAddress,sizeof(MyAddress)) Listen(BindSocket1,5);
Listen(BindSocket2,5);
....
这样可以么,有问题或是要注意的地方?