Re: [問題] 用Thread來寫一個udp server?

看板C_Sharp (C#)作者 (呵呵呵噗噗噗..搞笑..)時間20年前 (2005/06/17 11:10), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串5/5 (看更多)
※ 引述《unused (dealinfo.blogspot.com)》之銘言: : ※ 引述《tomex (tomex_ou)》之銘言: : : 應該沒問題呀! : : 建議使用非同步方法,這樣就不用一直控制thread : : 它自動會call back而開啟新的thread. : 啊..我應該講清楚一點 : 我現在需要一個server,每次有client進來的時候, : server&client之間會先用udp做一個handshake, : handshake成功後server&client會建立一個tcp connection. : 所以我想要每個client一開始用送udp封包時, : server就開一個thread,專門處理這個client的handshake跟之後的tcp連線.. : callback可以做到這樣嗎? : 之前純tcp server時我可以直接這樣 : client = new TcpListener(port); : client.start; : while(true) : { : blah blah 開一個thread : } : 現在就是想要用udp這樣做... 其實這應該只是流程設計上的問題 如果依照你的需求去做 我會用統一的入口先去收資料, 一個主UDPClient去收,因為UDPClient我記得可以建構時綁port 然後udp.Receive(ref remoteEP); 可以取得送來的對方資訊, 你就把對方資訊記錄起來,產生一個新port,用資料結構去mapping一下 譬如192.168.1.10連進來,我現在開個13000給他用. 通知client下次送改送13000 port.. 接著就是開新thread,每個thread都負責產生的port ,一個port一個client作handshake 所以新的thread內開一個UDPClient(13000),負責與192.168.1.10溝通 然後建立tcp連線也在這邊完成 我是不太推薦asynchronous sockets,因為會稍微難一點點.. 這種簡單的應用靠High-level的TCPListener,TCPClient,UDPClient就夠了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.19.58

207.109.29.39 06/17, , 1F
大感謝,這樣我就比較知道了. Thx a lot!! :D
207.109.29.39 06/17, 1F

60.248.89.46 06/17, , 2F
我當初學非同步,看了1星期有看沒有懂,後來通了..
60.248.89.46 06/17, 2F

140.115.205.46 06/17, , 3F
一星期 @@ 沒有好的文件可看?
140.115.205.46 06/17, 3F
文章代碼(AID): #12iZyZK7 (C_Sharp)
文章代碼(AID): #12iZyZK7 (C_Sharp)