阅读内容

关于Linux的socket的一个奇怪现象

[日期:2008-09-24] 来源:Linux社区  作者:Linux编辑


  在Linux下使用一个TCP Socket进行Listen的时候,最近发现一个诡异的问题。

  accept(2)是可以接受一个sockaddr指针来返回一个远端主机的地址,但是,实际情况是,如果这个连接是这个程序第一次发生的时候,是没有获得任何数据的,从第二次开始就没有这个问题,也就是紧跟这accept函数使用一个getpeername(2),即可以得到连接的主机的IP地址,从这以后开始的连接都没有这个问题。可是,如果accept中如果用accept(sock_fd,NULL,NULL)这样的形式,来使accept(2)不返回远端主机地址的情况下,第一次getperrname函数也是什么都得不到的。

  这个问题在我现在能测试的平台有Linux 2.4.20, glibc-2.3, Linux 2.6.18 glibc-2.3, Linux 2.6.20-21, glibc 2.7都有这个问题,不知道是不是socket实现的bug。 




本文评论       全部评论
发表评论
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款


点评: 字数
姓名:

L
I
N
U
X


GOOGLE搜索
Google