2011-03-07 42 views
0

爲了學習,我實現了一個使用UDP和數據報的Echo服務器,但是我有一個術語疑問。Java UDP DatagramPacket

如果發送DatagramPacket我必須連接到服務器偵聽端口 通過套接字發送它爲什麼有些書說UDP是無連接協議?

連接需要或我不明白?

謝謝。

回答

1

UDP是無連接協議。你不需要/無法連接使用UDP。但是,如果您有要求建立連接,我建議您使用TCP。

編輯:DatagramSocket上有一個連接方法,但是它是所有

將套接字連接到遠程地址此套接字。當套接字連接到遠程地址時,只能將數據包發送到該地址或從該地址接收數據包。默認情況下,數據報套接字未連接。

它不建立這樣的連接。

+0

但DatagramSocket也有一個連接方法,我指定的地址和端口... – xdevel2000 2011-03-07 09:46:07

1

無連接意味着接收服務器不存儲連接的狀態,並且您沒有從接收服務器收到響應(確認或錯誤)。

但是,通信一如既往地通過端口/套接字,您需要一個本地端口和一個遠程端口。

2

在這種情況下,「無連接」是指UDP不建立握手來建立連接。此外,除非服務器協議被設計爲發送它們,否則沒有確認收到發送的數據包。

雖然DatagramSocket具有一個連接的方法,所述API狀態:
「如果到該插座連接不存在,或者是不可到達,並且如果一個ICMP目的地不可達分組已被接收到該地址的遠程目標,那麼隨後的發送或接收調用可能會拋出PortUnreachableException。注意,不保證拋出異常。「

因此,您可以將數據發送到地址,並且沒有任何跡象表明實際上沒有連接。