Re: [問題] 用Thread來寫一個udp server?
※ 引述《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
207.109.29.39 06/17, 1F
推
60.248.89.46 06/17, , 2F
60.248.89.46 06/17, 2F
推
140.115.205.46 06/17, , 3F
140.115.205.46 06/17, 3F
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章