我正在嘗試使用套接字編寫一個簡單的SNPP(簡單網絡分頁協議)客戶端。除了服務器之間的小差異外,一切似乎都運行良好。從Socket接收分塊數據到單個緩衝區
當我發送一個命令時,我需要讀取通常是單個數據塊的回覆。但是,Sprint的SNPP服務器分兩部分發送回復。第一個數據塊是狀態碼的第一個數字。第二塊是餘下的。例如,當我試圖收到「220網關準備好了」的答覆,它到達這樣的:
2
我再派空命令檢索休息:
20 Gateway ready
眼下,我使用的是:
byte[] buffer = new byte[256];
socket.Receive(buffer);
我怎樣才能確保我收到的所有可用的數據,而不爲每個數據塊分配一個單獨的緩衝區發出命令後?
我喜歡這個解決方案,因爲它處理所有大小的塊。但是,收到第一個答覆後,應用程序停止響應,直到有新數據。調試器顯示它掛起時的狀態。 – 2009-05-03 15:17:26