我正在測試我的TCP回顯服務器,用Telnet,我可以看到客戶端連接到服務器併發送一個字符,並作爲回報,服務器返回一個字符串給客戶端。C/LF條件檢查C
現在我的問題是通過在無限循環中使用此recv()我只能接收一個字符(即使客戶端傾向於發送字符串)。
這就是我正在做的從客戶端接收數據報
TCP SERVER
while(1)
{
socket = accept(server_socket, (struct sockaddr *)&client_address, (socklen_t)&client_length);
recv(socket, recv_buffer, sizeof(recv_buffer), 0);
printf("Received string from client is %s", recv_buffer);
/*then I send my string to the client*/
send(socket, send_buffer, sizeof(send_buffer), 0);
}
這裏是我的問題,我的recv()函數讀取,即使客戶想只有一個字符發送整個字符串。有沒有辦法讓recv()例程在接收到來自客戶端的所有字符之前等待,然後向客戶端發送響應。
任何建議,將不勝感激
問候
接收代碼在哪裏? – wallyk 2011-05-10 07:45:15
作爲一個側面問題...值得注意的是,Telnet是一個終端客戶端,所以它不僅會傳輸你輸入的字符串到你的服務器,所以如果你得到一些可能乍一看似乎是垃圾的控制代碼,請不要驚訝... – forsvarir 2011-05-10 07:55:47
我的問題是,即使客戶端向我發送一個完整的字符串,即我手動在telnet客戶端上鍵入,我也只收到一個字符。只要我輸入一個字母,它就會被ma服務器接收到,我的服務器發送一個可以在telnet的終端輸出中看到的文本。 – Devb 2011-05-10 10:58:49