一个很cheep的问题
ACE_SOCK_Stream::recv_n(......)==0跟ACE_SOCK_Stream::recv_n(......)==-1
的区别是什么啊
谢谢回答 ACE_SOCK_Stream的注释中这么说的:
* The return values for the "*_n()" methods match the return values
* from the non "_n()" methods and are specified as follows:
* - On complete transfer, the number of bytes transferred is returned.
* - On timeout, -1 is returned, errno == ETIME.
* - On error, -1 is returned, errno is set to appropriate error.
* - On EOF, 0 is returned, errno is irrelevant.
那么问题是error和EOF的区别是什么?
偶查了一下,EOF是对方socket正常关闭需要向对端发送的一个FIN,这样的结果反映在接收端就是收到结束的信号,但是却没有可用的数据。
而error应该是在socket的连接意外中断的时候发生的结果。
不知道对你有无参考价值。
页:
[1]