2009-10-20 104 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有效?