作者kekul (每天都肚子餓)
看板C_Sharp
標題[問題] 請教一個 TcpListener 問題
時間Wed May 30 16:00:00 2007
我寫了一個 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