none
關於TCP 多點傳送 RRS feed

  • 問題

  • http://www.dotblogs.com.tw/billchung/archive/2009/06/14/8817.aspx?fid=59513#feedback

    各位前輩好:看了上方網頁的程式後幫助很多,由於目前把你的程式改成一對多,也就是說一台server,16台client
    測試後,發現當第一台client連線到server時,可以正常的"互傳"資料,但當第二台client連線至server時,server就無法將資料傳至第一台了(應該說server只能跟最新連線的client傳資料)。
    簡單的說,16台的client都可以傳資料至srever,但server只能傳送最近連線進來的client。
    想了很久,如果我知道了16台client的 IP (利用IPEndPoint),server就可以將資料傳送至 指定的IP端吧(client)

    但 "server將資料傳送至 指定的IP端" 這語法該怎麼寫!? 懇請版主給點建議!! 
    ps很多書都只有寫到單純的一對一....{冏}
    期待你的回應 謝謝!!

     
    2013年7月24日 上午 06:17

解答

  • 若沒有用集合或陣列儲存每個Client連線的Socket,你的Server就只能使用目前存在Server端的Socket

    也就是只能1對1

    當把每個Client的Socket都儲存起來後

    判斷Server現在訊息是要送給哪個Socket,就可以實現對不同Client做回應

    最後再補個多少時間沒有通訊就將那個Client斷線並清除Socket

    • 已標示為解答 black_NERO 2013年7月30日 上午 06:48
    2013年7月25日 上午 03:53

所有回覆

  • 如果你要 Server 回傳給 Client, 你在 Server 上就要有個集合或DataTable 之類的用來維護連進來的 Clinet , 不然你哪知道要送給誰 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年7月24日 上午 08:35
    版主
  • 一個Server可以和多個Client連線, Server只要用集合或陣列記下和每一個Client連線的Socket, 就能夠和每一個Client通訊
    2013年7月25日 上午 02:33
  • 你好! 可以講得在細一點嗎!?

    Server只要用集合或陣列記下和每一個Client連線的Socket  →這句不是很懂

    謝謝

    2013年7月25日 上午 02:47
  • 若沒有用集合或陣列儲存每個Client連線的Socket,你的Server就只能使用目前存在Server端的Socket

    也就是只能1對1

    當把每個Client的Socket都儲存起來後

    判斷Server現在訊息是要送給哪個Socket,就可以實現對不同Client做回應

    最後再補個多少時間沒有通訊就將那個Client斷線並清除Socket

    • 已標示為解答 black_NERO 2013年7月30日 上午 06:48
    2013年7月25日 上午 03:53
  • 原程式在 StartListen 方法內的

    If ClientSocket.Connected = True Then
    					Dim myObj As New CSState
    					myObj.myTcpListener = myTcpListener
    					myObj.ClientSocket = ClientSocket

    這一段中的 ClientSocket 就是取得 Client 端的 Socket 相關資訊, 所以你可以宣告一個集合, 比方 List(of Socket) 來存放這資料.

    如果你不懂什麼是集合, 那你應該先讀以下連結與相關資料, 瞭解集合怎麼使用.

    Visual Basic 中的集合

    Visual Basic 中的泛型型別 (Visual Basic)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年7月25日 上午 04:20
    版主