C 接收和傳送UDP資料

2021-04-02 17:56:06 字數 692 閱讀 3768

除了點對點,通常udp資料的傳遞方式有兩種,一種是broadcast,一種是multicast。中文一般把它們翻譯作廣播和組播。前者是簡單的在區域網裡面廣播;後者是借助路由器將資料傳送到包括英特網在內的任何多個位址。

在c#裡面,處理udp通訊最簡單的方法就是使用udpclient。具體使用方法我也不贅述了,在msdn上就有。需要注意的問題有:

1、udp通訊在傳送的時候可以繫結任何本地埠,但是在接收的時候需要在本地繫結廣播或者多播埠。

2、組播的時候傳送和接收雙方都需要joinmulticastgroup。引數timetolive名字很容易讓人誤會,其實它指的是允許udp資料穿過幾個路由器(當然還要路由器允許組播包通過才行);在winsock api當中,這個引數一般叫做scope,我覺得是比較合適的引數名字;如果你不明白或者沒有特別的需要,把這個引數設為5就可以了。

3、udpclient的傳送和接收都是無限阻塞的。這讓程式設計變得更容易,但是也會帶來一些麻煩。傳送的問題倒不大,因為傳送udp資料基本上不會阻塞。不過接收就不一樣了,最好是單獨起乙個執行緒進行接收動作,然後在需要停止接收的時候,先udpclient.close()再thread.abort()。

如果需要更靈活的控制,那麼就不要使用udpclient,改為直接使用socket就可以了。稍微麻煩一點,不過道理一樣的。

附帶說一下:點對點傳大量udp資料的時候,先呼叫connect方法可以節省不少時間。

C 接收和傳送UDP資料

除了點對點,通常udp資料的傳遞方式有兩種,一種是broadcast,一種是multicast。中文一般把它們翻譯作廣播和組播。前者是簡單的在區域網裡面廣播 後者是借助路由器將資料傳送到包括英特網在內的任何多個位址。在c 裡面,處理udp通訊最簡單的方法就是使用udpclient。具體使用方法我也不...

C 中UDP資料的傳送 接收

visual c udp資料的傳送 接收包使用的主要類及其用法 用visual c udp協議的實現,最為常用,也是最為關鍵的類就是udpclient,udpclient位於命名空間system.net.sockets中,visual c udp資料報的傳送 接收都是通過udpclient類的 表0...

C 中UDP資料的傳送 接收

visual c udp資料的傳送 接收包使用的主要類及其用法 用visual c udp協議的實現,最為常用,也是最為關鍵的類就是udpclient,udpclient位於命名空間system.net.sockets中,visual c udp資料報的傳送 接收都是通過udpclient類的 表0...