首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于socke编程的一个有关问题

2013-07-08 
关于socke编程的一个问题LZ正在看UNIX 网络编程那本书 看到第六章开始有个问题搞了好几天都没弄明白 因此

关于socke编程的一个问题
LZ正在看UNIX 网络编程那本书 看到第六章开始有个问题搞了好几天都没弄明白 因此特来请教大家

I/O复用那章开头说:当客户阻塞在fgets期间,服务器子进程被杀死,服务器TCP虽然正确的给客户TCP发送了一个FIN,但是客户进程正阻塞于从标准输入读入的过程,它将看不到这个EOF,直到从套接字读时为止(可能已经过了过了很长时间)。

我的问题是:1)这个EOF是怎么来的?2)它将看不到这个EOF该怎么理解啊?
[解决办法]
服务器关闭套接字连接后,客户端从连接中只能读到一个EOF,表示结尾了。就像你从文件中读数据一样,读到末尾就会读到一个EOF结束符。套接字关闭后,读到最后也是一个EOF结束符。因为UNIX 把很多东西都当成文件处理。

而客户端阻塞与fgets调用,而没有去读套接字,也就发现不了EOF了。
[解决办法]

引用:
Quote: 引用:

服务器关闭套接字连接后,客户端从连接中只能读到一个EOF,表示结尾了。就像你从文件中读数据一样,读到末尾就会读到一个EOF结束符。套接字关闭后,读到最后也是一个EOF结束符。因为UNIX 把很多东西都当成文件处理。

而客户端阻塞与fgets调用,而没有去读套接字,也就发现不了EOF了。


多谢多谢 可是FIN和EOF是什么关系呢?客户端进程是通过什么奖FIN转换为EOF的?


不是将FIN转换为EOF,你可以认为,服务端关闭连接前的一瞬间往连接中写了一个EOF。读到EOF就表示对方关闭了连接。

热点排行