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



我有两个具有套接字连接的进程。一个进程向套接字写入一个内容,然后关闭连接。另一个进程等待侦听,当连接被接受时,它进入一个"读取"循环,因此它将从第一个进程获取消息并对其进行处理,然后等待来自第一个进程的其他消息。当第一个进程关闭时,第二个进程一遍又一遍地读取相同的消息,当然,做任何与它有关的事情,一遍又一遍…这里发生了什么,我怎么传递它?

您一定忽略了EOS条件,并且可能完全忽略了read()返回的值。它返回一个正字节数,在EOS时返回0,在错误时返回-1,并附带errno。如果得到0,则必须关闭socket并停止读取;大多数情况下得到-1,同上;如果你得到一个正字节数,你必须只在读缓冲区中处理那么多字节。

没有手头的代码很难说,但我总是根据Beej的指南编写套接字代码,而且从来没有失败过。也许你能在那里找到答案。

最新更新