当前位置:编程学习 > C#/ASP.NET >>

如何設定 Socket 超時 (Timeout)?

請問 Socket 預設超時時間是?
要如何設定 Socket 連接超時? 傳送超時? 接送超時?

補充一下,我在 msdn 找很久,但我發現原來這個不是那麼簡單的問題,很多人都有這個問題的樣子...

我提供一下我目前找到的一些資料..

//設定傳送超時 (微秒)
 this.ProxySocket.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 5000);

//設定接收超時 (微秒)
this.ProxySocket.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 5000);

//設定連接超時 (Timeout 是微秒,但我測試的結果有時候可以 Timeout,有時候還是必須等到 .NET 預設值才會丟出 Timeout 例外..)
if (!this.ProxySocket.Poll (5000000, SelectMode.SelectError)) {
    //強制拋出例外..
    throw new Exception ("Connect Timeout");
}


結論:還是沒辦法...orz

請各方高手幫忙
謝謝 --------------------编程问答-------------------- 等了好久都沒人回答,難道真的沒有人會嗎? 還是高手不削回答呢?
我本以為 C# 是新語言各方面支援程度應該都很高階的,
可是連 Socket 的 Timeout 設定都那麼難..orz

求助><~ --------------------编程问答-------------------- 推 --------------------编程问答-------------------- DateTime start = DateTime.Now;

while(true)
{
  if(((TimeSpan)(DateTime.Now - start)).Seconds == yourTimeOut)
  {
     //handle timeout
     break;
  }
  else 
  {
    //go on your code...
  }
} --------------------编程问答-------------------- 你的意思是要我在 socket 連線之前開一個線程執行迴圈去讀秒數嗎? 然後如果超時再從子線程裡面把 socket 關閉? 或是自已強制拋出例外再處理...???
這樣聽起來好像是可行的,但其實會有更多問題要克服的,我不想這樣做,而且我也相信 c# 那麼強大的高階程式語言,不可能連 timeout 都沒有沒辦法設定..
如果連超時都沒有支援的話,還能自稱 .net 嗎? --------------------编程问答-------------------- 內地高手如雲,怎麼會沒人願意解答呢? 難道是我的問題太簡單高手都不削回答嗎? --------------------编程问答-------------------- 我也不会设置
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,