当前位置: 技术问答>linux和unix
if( (n=Readline( sockfd,line,MAXLINE) )==0)为什么服务器接收到客户FIN时,Read返回的是0。,既然FIN被读出来了,为什么Read返回的是0
来源: 互联网 发布时间:2015-10-09
本文导语: if( (n=Readline( sockfd,line,MAXLINE) )==0) 为什么服务器接收到客户FIN时,Read返回的是0。 问:Read返回的是0 是什么意思? 是表示什么都没有读出来吗?但是书上又说有FIN被读出来了,既然FIN被读出来了,为什么Read返回...
if( (n=Readline( sockfd,line,MAXLINE) )==0)
为什么服务器接收到客户FIN时,Read返回的是0。
问:Read返回的是0 是什么意思? 是表示什么都没有读出来吗?但是书上又说有FIN被读出来了,既然FIN被读出来了,为什么Read返回的是0?
为什么服务器接收到客户FIN时,Read返回的是0。
问:Read返回的是0 是什么意思? 是表示什么都没有读出来吗?但是书上又说有FIN被读出来了,既然FIN被读出来了,为什么Read返回的是0?
|
FIN是由TCP确认,而后让应用层read返回0.
|
read return 0 表示对端被关闭了!
|
就这样规定的呗, 你的意思要返回1? 那你怎么知道客户发送的是fin还是一般的字符,难道每次都要检查吗?
|
客户端还没有内容写进去
应该先select这个端口是否可读,然后再去read。
或者把socket改成阻塞模式
推荐第一种方法
应该先select这个端口是否可读,然后再去read。
或者把socket改成阻塞模式
推荐第一种方法