我有客戶端服務器項目。我在從服務器發送數據到客戶端時遇到問題。爲什麼networkstream.write阻止?
private bool SendPack(object client, string data)
{
lock (this)
{
try
{
NetworkStream clientStream = tcpServer.GetStream();
byte[] Pack= ClsEncryption.GetEncrypt(data);
clientStream.Write(Pack, 0, Pack.Length);
clientStream.Flush();
return true;
}
catch
{
return false;
}
}
}
雖然我使用鎖,當寫命令運行時,一切都毀了。我的意思是沒有發送和寫不返回(如阻止)。我應該通過使用beginwrite還是不使用異步方法?我如何檢查網絡流是否準備好寫入並且不會阻塞。我使用clientstream.canwrite,但它沒有用。
我需要最快和最可靠的方式發送數據。 任何想法?
Offtopic建議:你應該避免使用鎖定(this)。見http://stackoverflow.com/questions/251391/why-is-lockthis-bad。 –
什麼是'tcpServer'?你如何創建它?請張貼更多相關的代碼。 –
它是服務器嘗試向其發送數據的客戶端對象。 –