当前位置: 技术问答>linux和unix
请见者给出答案,多谢!
来源: 互联网 发布时间:2017-03-22
本文导语: 问题描述:我在主函数中创建一个线程,而在线程中又创建了一个网络套接字,用于网络连接,可是在使用下面方式时的效果为什么不同? 方式一: if(-1==(acceptfd2=accept(socketfd2,(struct sockaddr*)&caddr,&length))) 使用这一条...
问题描述:我在主函数中创建一个线程,而在线程中又创建了一个网络套接字,用于网络连接,可是在使用下面方式时的效果为什么不同?
方式一:
if(-1==(acceptfd2=accept(socketfd2,(struct sockaddr*)&caddr,&length)))
使用这一条语句时,编译能过,但与客户端连接时,出现错误:Invalid argument
方式二:
if(-1==(acceptfd2=accept(socketfd2,NULL,NULL)))
没问题
方式一:
if(-1==(acceptfd2=accept(socketfd2,(struct sockaddr*)&caddr,&length)))
使用这一条语句时,编译能过,但与客户端连接时,出现错误:Invalid argument
方式二:
if(-1==(acceptfd2=accept(socketfd2,NULL,NULL)))
没问题
|
length需要预先赋值为sizeof(struct sockaddr_in)
|
accept使用时必须预先设定length值。
没设置的情况下属于“未定义”行为。
|
length如果没被初始化,则若恰好length里面的随机值恰好 > sizeof(struct sockaddr_in),则accept没问题。
反之,则出错。
反之,则出错。
|
length里面的随机值恰好 >= sizeof(struct sockaddr_in)
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。