Re: 有人要 AN833 ?
|
||||
---|---|---|---|---|
初級會員
|
參照:
"結束 tcp 通訊"是指將tcp socket關掉, 然後再開一個新的socket給udp用嗎? 還是tcp和udp是可共存的,可同時開兩個socket切換使用? 不知道要如何才能使其合併使用?
發表於: 2004/10/22 16:02
|
|||
|
Re: 有人要 AN833 ?
|
||||
---|---|---|---|---|
資深會員
|
參照:
傷腦筋 UDP 通常用於允許資料丟失的通訊,例如收聽即時的網路廣播,丟失一兩個封包也就算了,音樂繼續播,中間偶爾空白斷訊 0.1 秒也沒關係,還可以忍受就好。用 internet 講電話也是這樣,就叫做 VoIP。 你要 login,password 這些動作,還是用 tcp 吧,先用 tcp 連線,login 確認之後,就結束 tcp 通訊,再每個用戶開啟 一個專用的 udp socket,與專用的 port 窗戶,接著就用 udp 高速傳輸資料。udp 傳輸結束後再透過 tcp 通知 server,tcp 的 socket 永遠不關閉。tcp 和 udp 各有特長與缺點,合併使用才對。 VoIP 的通訊就是這樣先用 tcp 做連線請求再用 udp 傳資料的。 Good luck
發表於: 2004/10/19 13:04
|
|||
|
Re: 有人要 AN833 ?
|
||||
---|---|---|---|---|
初級會員
|
用 UDP,就算 client 死了 server 也不會知道,就沒有所謂處理的問題啦。
那我client端就不能設login的ID & PASSWORD囉!!因為登錄只要一錯誤, SERVER就會將Socket關掉,不讓client連線,此時client就要再重新連線,登錄正確後才可以送資料,可是當我斷線後,client就再也連不上去了!!!
發表於: 2004/10/19 11:13
|
|||
|
Re: 有人要 AN833 ?
|
||||
---|---|---|---|---|
資深會員
|
參照:
用 UDP,就算 client 死了 server 也不會知道,就沒有所謂處理的問題啦。server 死了client 也不會知道。 udp 相當於平信,普通信,只有發信人和收信人,郵局把信丟到水裡收信人也不會知道,收信人根本不會知道有人寄信給他。 tcp 比雙掛號信還複雜,收信人沒收到的話,發信人會知道,反之亦然。tcp 簡單流程如下: 1. client 說: server 你在家嗎?(SYN) 2. server 說: 我在家。(SYN-ACK) 3. client 說:data 如下,請查收。 4. server 說: 收到,請繼續。(ACK) 此時若 client 沒收到 server 的 ACK 則在預定時間內會不斷重發階段 3 的 data。 5. client 說: ..... 還有很多變化,有夠複雜的啦。你若選用 tcp 則 AN833 裡的程式就會幫你處理這些流程,以及 timeout 或當機的事件,你可以檢查這些 AN833 所提供的訊息,自己決定後續處理的方式。 UDP 是發了信就不管了,沒有重發的機制。你要自行加上各種查驗機制當然也行,把 udp 改到跟 tcp 一樣複雜也行,呵呵。不過,加上一堆檢查之後,平均的通訊速度就又會降低啦。 先去看看 RFC1180,瞭解一下 tcp 和 udp 的差異再說吧 上 google,查 RFC1180。 隨便去圖書館借本 TCP/IP 的書也行,要看書啦。 或是先拿兩台 PC ,用 VB 加上 Winsock 稿個 UDP 通訊看看, server 能知道 client 當機嗎?最多也只能說,若 N 秒鐘內client 都沒說話,喔,client 大概是死啦。沒別的了。
發表於: 2004/10/18 17:55
|
|||
|
Re: 有人要 AN833 ?
|
||||
---|---|---|---|---|
初級會員
|
如果client端timeout或當機之後, server端要如何處理呢?
發表於: 2004/10/18 13:42
|
|||
|
Re: 有人要 AN833 ?
|
||||
---|---|---|---|---|
資深會員
|
參照:
沒人能幫你的!你要的是不可能做到的。 udp 是 connectionless 的通訊方式,沒有所謂的server 和 client 的概念,socket 關了就是關了,任何人都進不去的。
發表於: 2004/10/16 12:31
|
|||
|
Re: 有人要 AN833 ?
|
||||
---|---|---|---|---|
初級會員
|
udp程式我已經寫好了, server和 client可以互傳資料,但我有一個問題---->當server端把socket關掉,client要再重新連線卻連不進來,我想問題可能出在socket關閉之後,要再重新broadcast, 但這部分不知道該怎麼寫?
有誰知道的可以幫我嗎? 謝謝囉!!!
發表於: 2004/10/15 18:28
|
|||
|
Re: 有人要 AN833 ?
|
||||
---|---|---|---|---|
資深會員
|
參照:
書上有 "TCP/IP Lean: Web Servers for Embedded Systems" http://www.iosoft.co.uk/tcplean.php 簡體中文翻譯,一本只要 59 RMB ,呵呵 http://www.china-pub.com/computers/common/info.asp?id=12191 程式適用於 CCS 與 Hi-Tech ,移植到 C18 應該不難
發表於: 2004/10/12 10:02
|
|||
|
Re: 有人要 AN833 ?
|
||||
---|---|---|---|---|
初級會員
|
誰有UDP加DHCP的應用程式,可供參考一下的!!!
發表於: 2004/10/8 16:19
|
|||
|