不懂SO_REUSEADDR到底有什么作用?

xxb51357 2003-09-29 08:29:59
//看资料说是用于端口重绑定,但写程序验证却失败了(预期会弹出2个对话框,结
//果只有1个,为什么?请讲讲它的作用。

#include <winsock2.h>
void main()
{
WSADATA w;
WSAStartup(MAKEWORD(2,2),&w);

SOCKET a,b;
a=socket(AF_INET,SOCK_DGRAM,0);
b=socket(AF_INET,SOCK_DGRAM,0);

BOOL bReuse=TRUE;
setsockopt(a,SOL_SOCKET,SO_REUSEADDR,(LPCTSTR)&bReuse,sizeof
(BOOL));

sockaddr_in sa;
sa.sin_family=AF_INET;
sa.sin_port=htons(7070);
sa.sin_addr.s_addr=inet_addr("127.0.0.1");

if(bind(a,(sockaddr*)&sa,sizeof(sockaddr))==0)
MessageBox(NULL,"A success","提示",MB_OK);
if(bind(b,(sockaddr*)&sa,sizeof(sockaddr))==0)
MessageBox(NULL,"B success","提示",MB_OK);

WSACleanup();
}
...全文
296 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
studyingpersons 2003-09-30
  • 打赏
  • 举报
回复
在setsockopt(a,SOL_SOCKET,SO_REUSEADDR,(LPCTSTR)&bReuse,sizeof(BOOL));语句后面加上一句setsockopt(b,SOL_SOCKET,SO_REUSEADDR,(LPCTSTR)&bReuse,sizeof(BOOL));
试试看!!!
Semigod 2003-09-30
  • 打赏
  • 举报
回复
让你的一个端口可以有多个连接,知道WEB服务器一般用80端口吧,N多人同时连接这个80端口都能行就是因为服务器端程序通过SO_REUSEADDR将80端口复用了,否则的话,任何时候都只能有一个连接进来,那就惨啦

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧