C语言中的Unix套接字 - 读取套接字中的循环

时间:2011-10-31 12:14:53

标签: c sockets

我有两个带套接字连接的进程。 一个过程是将一个东西写入套接字然后关闭连接。 另一个进程等待侦听,当连接被接受时,它进入一个'read'循环,这样它就会从第一个进程获取消息并做任何与它有关的事情,然后等待来自第一个进程的其他消息。 当第一个过程关闭时,第二个过程一遍又一遍地读取同一个消息,当然,一次又一次地做任何与它有关的事情。 什么事发生在这里,我如何通过它?

2 个答案:

答案 0 :(得分:2)

您必须忽略EOS条件,并且可能完全忽略read()返回的值。它返回一个正字节数,或者在EOS时返回零,或者在出错的情况下返回-1,伴随着errno。如果你得零,你必须关闭插座并停止阅读;如果你在大多数情况下得到-1同上;如果得到正字节数,则必须只处理读缓冲区中的那么多字节。

答案 1 :(得分:0)

很难说没有手头的代码,但我总是根据Beej's guide编写我的套接字代码,它永远不会失败。也许你可以在那里找到答案。