2009-10-20 73 views
0

我正在写一些代码,我需要从套接字中获取一行,只要行在换行符或回车中结束。该行应该存储在缓冲区中。从套接字读取一条线

n = recv(sock, &ch, 1, 0); 
    if (n > 0) 
    { 
    if (ch == '\r') 
    { 
     // do stuff 
    } 
    // 
    } 
    // 

我在一段时间内使用类似这样的代码,但它不工作任何线索我怎么能做到这一点。

编辑:我想要从套接字读取一行并返回解析。这应该是每行读取的笔。

+1

您需要提供比此更完整的代码示例,和/或更好地描述“不工作”(您希望发生什么以及实际发生的事情)的含义。 – caf

回答

3

这与最近题为“getline over a socket”的问题类似。

答案是你不应该这样做。如果客户没有发送下一行,会发生什么?你的程序会挂起。

从您的代码片段看来,您似乎没有检查错误代码。这些将说明你的代码为什么“不起作用”,并指出从哪里开始寻找问题。

1

1)也许你有回车/换行吗?

2)也许ch溢出?

3)也许你的流是二进制的,\ r对非EOL有效?