none
網路通訊幾個問題 RRS feed

  • 問題

  • 最近看書研究網路通訊這部份,有幾個地方不太清楚,

    1.看書上"非同步範例"

    '以下程式碼為不完整
    client = new TcpClient
    client.Connect(...)
    client.GetStream.BeginRead(...)
    
    '以下為CallBack的地方
    dim ByteRead as integer = client.GetStream.EndRead(ar)
    .....
    client.GetStream.BeginRead(...)
    

    非同步時,系統使用ThreadPool內的Thread來執行,想請問在CallBack再次呼叫讀取,會不會造成效能問題,感覺執行緒中在開執行緒...

    而且如果長時間無資料傳進,ThreadPool也會一直建立來執行CallBack,只是用ByteRead<1讓他跳離,不知道是否觀念錯誤了??

    2.(伺服端)如果TcpListener有讀寫功能,要Stop前是否要close NetworkStream,還是(遠端)的TcpClient關閉即可?

    2010年8月23日 上午 02:20

解答

  • 1) 在CallBack再次呼叫讀取應該沒有關係, 但是如果應用程式一直不斷的地讀取, 沒有結束的時候, 會讓伺服器一直處於忙碌的狀態

    2) 先Close NetworkStream, 再關閉TcpListener

    • 已標示為解答 小見光二 2010年8月25日 上午 09:27
    2010年8月23日 上午 03:29