我正在寫簡單的服務器/客戶端在c,其中服務器臨時存儲來自客戶端的消息,並在客戶端請求時檢索它。從插座讀取緩衝區
問題是當客戶端收到來自服務器的消息時,緩衝區有點奇怪。 所有我所做的是多讀,從服務器接收並打印在屏幕上,但不知何故,緩衝液overwrited比緩衝區的最大尺寸更
在客戶端while((byteRead = recv(ssock, buffer, MAXBUF, 0)) > 0)
{
if(byteRead <= 0)
break;
printf("%s", buffer);
}
其中MAXBUF是256.保持包含一些garbages,所以我在緩衝 檢查字符串大小和令人驚訝的
printf("%d READ vs %d buffer strlen \n", byteRead, strlen(buffer))
告訴我,byteRead是256,但緩衝區的字符串長度爲262
任何想法?
P.s在服務器端,它正確讀取文件並將其發送到套接字上。
確定我得到了這一點。但在服務器端,當客戶端通過套接字向服務器發送消息時,它會正確接收並且我沒有添加空指針。即使我以爲我發送給客戶端之前我添加了空指針,它仍然顯示垃圾的東西; – REALFREE 2010-06-19 08:18:34
@REALFREE:當我們說空終止符時,我們正在談論「nul」*字符*,而不是空*指針*。此外,在你的服務器的情況下,它可能會出現*工作,因爲祝你好運,但你做的事情不合適。 – Artelius 2010-06-19 08:50:11