| 网站首页 | 考研信息中心 | 考研资料下载 | 考研论坛 | 考研专业试题 | 2008考研招生简章 | 考研图书 | 留言板 | 考研图片中心 | 

设为首页
加入收藏
联系我们

您现在的位置: 考研信息网 >> 考研信息中心 >> 计算机类考试首页 >> 微软认证 >> 最新资讯 >> 正文 用户登录 新用户注册
Windows网络编程总结(一)            【字体:
Windows网络编程总结(一)
作者:佚名    文章来源:不详    点击数:    更新时间:2006-11-10

本站推荐Firefox浏览器,有效阻止病毒和垃圾弹出[正版免费下载]

关于bind:

  INADDR_ANY 的具体含义是,绑定到0.0.0.0。此时,对所有的地址都将是有效的,如果系统考虑冗余,采用多个网卡的话,那么使用此种bind,将在所有网卡上进行绑定。在这种情况下,你可以收到发送到所有有效地址上数据包。

  例如:

  SOCKADDR_IN Local;

  Local.sin_addr.s_addr = htonl(INADDR_ANY);

  
  另外一种方式如下:

  SOCKADDR_IN Local;

  hostent* thisHost = gethostbyname("");

  char* ip = inet_ntoa(*(struct in_addr *)*thisHost->h_addr_list);

  Local.sin_addr.s_addr = inet_addr(ip);

  在这种方式下,将在系统中当前第一个可用地址上进行绑定。在多网卡的环境下,可能会出问题。

  
  最常见的方式:

  const char LocalIP[] = "192.168.0.100";

  SOCKADDR_IN Local;

  Local.sin_addr.s_addr = inet_addr(LocalIP);

  bind(socket, (LPSOCKADDR)&Local, sizeof(SOCKADDR_IN)


  bind的 安全 问题:

  如果你在bind时,使用了INADDR_ANY那么,你将可以在所有有效的地址上进行监听,但是Socket有一个特性:可在同一端口上绑定多个Socket。

  让我们看看下面的情况:假设你的系统只有一个IP:192.168.0.100,你希望bind到4096端口。对于下面的两种bind,当数据包到达时,谁会接收到呢?

  Local.sin_addr.s_addr = htonl(INADDR_ANY);

  Local.sin_addr.s_addr = inet_addr(“192.168.0.100”);


  WinSocke库是这样处理的:谁绑定的最明确,谁获取数据包。显然,第二种bind将获取到达的数据包。如果避免这种情况呢?使用SO_EXECLUSINEADDRUSE选项。需要注意的是,此选项在Windows NT 4 Service Pack 4以后(包括SP4)才可以使用。

  示例代码:

  #ifndef SO_EXECLUSINEADDRUSE

  #define SO_EXECLUSINEADDRUSE ((int)(~SO_REUSEADDR))

  #endif
  

  SOCKADDR_IN Local;

  BOOL val = TRUE;

  
  Local. sin_family = AF_INET;

  Local. sin_port = htons(4096);

  Local.sin_addr.s_addr = htonl(INADDR_ANY);

  
  setsocketopt(socket,

  SOL_SOCKET,

  SO_EXECLUSINEADDRUSE,

  (char*)&val,

  sizeof(val));

  
  bind(socket, (LPSOCKADDR)&Local, sizeof(SOCKADDR_IN)


考研信息网在线版权与免责声明

1、 凡本站注明“稿件来源:考研信息网(sanwww.com)”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、

网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时

必须注明"稿件来源:sanwww.com",违者本站将依法追究责任。

2、本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着

赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

3、考研试题、各种考试试题以及考试信息转载于各大bbs论坛,就其真实性本站无法证实,并不意味着赞同其观点。

如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
           最新热点        最新推荐        相关文章
    《Never Surrender》后记
    微软公布网络服务战略 将推网络版W
    微软最新系统 Windows Vista硬件优
    微软停止支持Windows98称为安全就别
    WinVista耗电量大·影响笔记本电池
    鲍尔默:微软能有今天靠的不是Windo
    微软放言Windows将干掉Linux
    微软CTO考察加固Windows的“统治地
    阻击Linux居首鲍尔默:微软今年必做
    Windows引导存储虚拟化趋势
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)