none
TcpListener 和 TcpClient 問題 RRS feed

  • 問題

  • 最近在研究網路通訊這塊,有點觀念上的問題,希望前輩們指教:

    1.TcpListener.AcceptTcpClient 會回傳一個 TcpClient,想請問這個TcpClient和連入的那個TcpClient是同一個實體嗎?

    2.如(1)得到的TcpClient,如果沒Close前都可以傳送與接收資料嗎?還是要傳送或接收資料前再重新建立一個新TcpClient連入呢?

    2010年8月21日 下午 02:19

解答

  • 所謂同一個Instance指的是具有同樣的記憶體配置, 參考指標也會相同. 遠端的TcpClient 和 Server端的TcpListener.AcceptTcpListener 理所當然一定不會具有同樣的參考指標吧 ? 因為他們甚至會位在不同的Application 或 不同的電腦. 所以當然不會是同一個Instance.
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 小見光二 2010年8月22日 上午 04:40
    2010年8月22日 上午 02:18
    版主
  • 1) 這個TcpClient是與發出連線需求的用戶端進行通訊專用的TcpClient, 和用戶端程式中的TcpClient可以進行通訊, 但並非同一個物件

    2) 直接使用這個TcpClient進行通訊即可, 不需要另外建立新的TcpClient

    • 已標示為解答 小見光二 2010年8月22日 上午 04:40
    2010年8月22日 上午 03:46

所有回覆

  • 1. 當你使用 TcpListener.AcceptTcpClient, 它會依據現在連進來的TCP Client的資料去建立一個TcpClient的Instance. 在此之前記憶體中應該是沒有這個TcpClient的Instance吧 ? 我所不解的是你所謂的 連入的那個TcpClient 是在哪 ?

    2. 是

    另請參閱

    http://www.dotblogs.com.tw/billchung/archive/2009/06/14/8817.aspx


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年8月21日 下午 02:43
    版主
  • 1.連入的那個TcpClient是指,遠端會 new 一個Tcpclient 然後呼叫器 .Connect 的這個。

    之後TcpListener.AcceptTcpClient偵測有人連入,會回傳一個TcpClient,我所要問的是"呼叫連入的那個"與"回傳

    的"是指向同一個Instance嗎!!

    2010年8月21日 下午 05:45
  • 所謂同一個Instance指的是具有同樣的記憶體配置, 參考指標也會相同. 遠端的TcpClient 和 Server端的TcpListener.AcceptTcpListener 理所當然一定不會具有同樣的參考指標吧 ? 因為他們甚至會位在不同的Application 或 不同的電腦. 所以當然不會是同一個Instance.
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 小見光二 2010年8月22日 上午 04:40
    2010年8月22日 上午 02:18
    版主
  • 1) 這個TcpClient是與發出連線需求的用戶端進行通訊專用的TcpClient, 和用戶端程式中的TcpClient可以進行通訊, 但並非同一個物件

    2) 直接使用這個TcpClient進行通訊即可, 不需要另外建立新的TcpClient

    • 已標示為解答 小見光二 2010年8月22日 上午 04:40
    2010年8月22日 上午 03:46