当前位置: 技术问答>linux和unix
Linux网络编程的疑惑
来源: 互联网 发布时间:2017-01-25
本文导语: select和getsockopt最基本的用法我已经掌握了。 这里我有几个问题想请教下大家: 1.如果select被中断返回,errno等于INTR,然后continue,这样如果不停有中断的话select会不会无限制等待,永远无法返回,或者如果报文分片...
select和getsockopt最基本的用法我已经掌握了。
这里我有几个问题想请教下大家:
1.如果select被中断返回,errno等于INTR,然后continue,这样如果不停有中断的话select会不会无限制等待,永远无法返回,或者如果报文分片传送,每收完一片都要重新select吗,那此时的超时时间是否还是会被重新初始化?
2.如果一个套接字设置了SNDTIMEO的发送或接收超时选项,那么还需要select进行非阻塞侦听吗?如果有会引起冲突吗?
3.对一个套接字进行read操作的时候,read返回0代表什么?对方关闭了发送还是什么?
4.一般在发送数据的时候需要设置超时时间吗?这个超时时间是拷贝到系统缓冲区的时间还是发送到对方的时间?
暂时先总结这么多问题。如果需要看网络方面的资料的话,我应该去哪里找或者读那本书?
PS:UNIX高级环境编程和Linux网络编程自己有,我都看过。
嫌分低我可以加啊,直到有满意答案。
这里我有几个问题想请教下大家:
1.如果select被中断返回,errno等于INTR,然后continue,这样如果不停有中断的话select会不会无限制等待,永远无法返回,或者如果报文分片传送,每收完一片都要重新select吗,那此时的超时时间是否还是会被重新初始化?
2.如果一个套接字设置了SNDTIMEO的发送或接收超时选项,那么还需要select进行非阻塞侦听吗?如果有会引起冲突吗?
3.对一个套接字进行read操作的时候,read返回0代表什么?对方关闭了发送还是什么?
4.一般在发送数据的时候需要设置超时时间吗?这个超时时间是拷贝到系统缓冲区的时间还是发送到对方的时间?
暂时先总结这么多问题。如果需要看网络方面的资料的话,我应该去哪里找或者读那本书?
PS:UNIX高级环境编程和Linux网络编程自己有,我都看过。
嫌分低我可以加啊,直到有满意答案。
|
看UNIX网络编程这些应该都懂的。
1,没看懂,被中断再调用一次select就行了,这是水平触发的,不会丢失通知。
2,TIMEOUT超时选项是没有人用的,都是设置非阻塞就可以了。
3,read 0 表示对端close或者shutdowm(WR)。
4,套接字不需要设置超时,只需要设置非阻塞,如果希望除了网络I/O以外能够做一些其他的事情,可以给select加上超时。
1,没看懂,被中断再调用一次select就行了,这是水平触发的,不会丢失通知。
2,TIMEOUT超时选项是没有人用的,都是设置非阻塞就可以了。
3,read 0 表示对端close或者shutdowm(WR)。
4,套接字不需要设置超时,只需要设置非阻塞,如果希望除了网络I/O以外能够做一些其他的事情,可以给select加上超时。