客戶端在連接服務器報10061錯誤的原因

      爲了滿足某銀行客戶端數量過多,估計有700個左右。 在分發速度和響應速度的要求下,需要修改流控任務分發。於是,完成端口終於登場了。 從CodeProject中下載了一個封裝了完成端口的類,IOCPS,http://www.codeproject.com/KB/IP/iocp_server_client.aspx。結合流控任務分發上的應用,修改修改,弄了一個多星期,終於搞定,能夠獲取批次,對客戶端分發批次任務,分發速度和響應速度都有相應的提高,心裏那個爽啊。但有一個問題,在程序運行一段時間後,客戶端經常連接不上。 總是報10061的錯誤,由於目標計算機積極拒絕,無法連接。 如圖:

,一開始總以爲是偵聽socket的緩衝區滿了,阻塞了客戶端的訪問。折騰了幾天,問題木有解決。最終才發現是由於程序中同步出現問題,導致偵聽線程與其他線程陷入死鎖狀態,所以偵聽線程無法執行Accept()函數,客戶端就會報10061錯誤。表面上是服務器忙,其實是程序進入死鎖狀態了。
       ps: 服務器編程,同步很重要,但要非常小心,以免程序中各線程互相等待,從而進入死鎖狀態,引發其他問題出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章