看板 C_Sharp 關於我們 聯絡資訊
我寫了一個 Server/Client 程式 需求是 Server 一接到 Client 丟的一串 binary data (Byte[]) 就立刻對這段 binary data 做處理 但我發現資料似乎會塞在緩衝區,累積到一定程度再一口氣丟 所以在 Client Side 這端設定 tcpclient.NoDelay = true; 接著,在 Server 跟 Client 中間寫個小程式驗證 Client 也照預期每次 networkstream.write 時就將 data 丟出 但問題就出在 Server 這端 (Server 這端我用 TcpListner 去做 開 thread 後用 networkstream.BeginRead 去接) Server 似乎還是會緩衝起來 累積到一定的資料才拋出來 我試著將 tcplistener.Server.NoDelay = true; 或是將 listener.AcceptTcpClient() 接來的 tcpclient.NoDelay = true; 似乎都無法讓 data 一接到就丟出來 請問是否有什麼方式可以解決這個問題呢?? 在此先謝謝各位 ^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 116.59.125.16
cole945:你應該是要設定Blocking=false而不是設定NoDelay.. 05/30 16:57
cole945:還有"如果"你有透過什麼iostream去送資料給socket再送出.. 05/30 16:58
cole945:要注意那個iostream本身可能也會緩衝資料.. 05/30 16:59