2014-01-05 40 views
0

請原諒我一個愚蠢的問題,但我真的找不到解決方案。 這是這樣,我試圖做到這一點:如何通過TCP/IP C正確接收所有數據#

public void FillBuf(object sender) 
{ 
    var handler = (Socket)sender; 

    while (true) 
    { 
     received = 0; 

     while (received < 1024) 
     { 
     int block = handler.Receive(bytes, received, bytes.Length - received, SocketFlags.None); 
     received += block; 
     } 

     que.Enqueue(bytes); 
    } 

在節目的一開始,我開始線程,其執行FillBuf方法。問題是,由於某種原因,我從不接收1024字節。 預先感謝您。

+1

你確定在套接字的另一端,服務器實際上是在發送1024字節嗎? –

+0

你收到多少字節? –

+0

在客戶端,我收到463字節。服務器也有1024字節的緩衝區發送,但它可能並不總是滿的。可能是這個問題? – user3149474

回答

0

看來服務器並不總是發送1024字節。這意味着期待它們的客戶端代碼將掛起,直到獲得正確的數據量。您應該確保服務器正在發送預期的字節數或者在協議中實現一些機制,以允許發送方在有效負載的開始處指示要發送的字節數。這樣客戶端就會知道要讀取多少個字節。

相關問題