2013-08-02 43 views
1

我讀過很多關於UDP VS TCP其他線程的,但還沒有真正發現任何正確回答我的設計的問題,通過TCP使用UDP需要幫助決定何時與我的基本的聊天網絡

的聊天網絡,我將爲一個項目工作將有3個主要應用程序:客戶端,服務器和HUB(服務器)。

HUB服務器是將所有服務器連接在一起形成網絡的主要服務器。 服務器將跟上正在製作的聊天室,換句話說,它將託管房間。 客戶端將用於連接到服務器以加入聊天室。

現在我主要關心的是,在發送或執行客戶端到客戶端,服務器到服務器或服務器到客戶端的請求時,我應該何時使用UDP over TCP或反之?

注:這整個聊天網絡項目是100%基於文本的,沒有圖形,網絡攝像頭,麥克風,或文件共享功能。

回答

4

UDP用於例如在流中丟失一些數據包時可以接受的情況。在聊天系統的情況下,丟失信息是不可接受的,所以我會用TCP。有關更多信息,請參閱Difference between TCP and UDP?When is it appropriate to use UDP instead of TCP?

+0

我正在考慮設計HUB服務器,以便當我從它執行一個命令來收集來自普通服務器的信息時,普通服務器只會將信息回顯到集線器,所以我會知道請求的時間到達。這個例子對於UDP來說是不錯的選擇,因爲我聽說UDP比TCP有點快。 – subless

+0

同樣,如果你可以容忍一些數據包丟失,那麼'UDP'可以是一個不錯的選擇。另外,如果你所要做的只是提供一些非常簡單的事情,那麼'UDP'也可能是一個不錯的選擇,但是就交付聊天消息而言,我會使用'TCP'。這兩個鏈接中提供的許多答案都很有用,請查看。 –

+0

好的,謝謝你的信息和意見:) – subless

0

我不明白HUB服務器在這裏的作用嗎?你是否允許通過HUB服務器在不同聊天室之間傳遞消息?

正如Steve所建議的那樣,我也會推薦使用TCP來處理基於文本的聊天應用程序。 就像在基於文本的聊天應用程序中一樣,所有消息都應該按照發送的順序發送。

+0

HUB服務器是連接所有其他服務器的主要服務器。但HUB不做任何消息傳遞,只有正常的服務器處理該消息。 HUB只是連接普通服務器組成一個網絡,這樣我就可以讓每個普通服務器都更新到聊天室列表供用戶選擇。 – subless

0

正如其他人所說的,UDP不保證數據包傳遞。但是,如果HUB正好位於NAT或防火牆之後(如在對等網絡中),則UDP爲getting around it提供了優勢。在你的情況下,這是我使用UDP的唯一原因。如果你需要可靠的,爲了傳遞數據包,有一些庫可以幫助解決這個問題。