對於Socket的UDP資料廣播的重新認識

2022-08-03 09:03:10 字數 1154 閱讀 6781

原來一直認為,udp廣播就是對已知的一連串ip位址來逐個傳送資料報,我的機房遠端協助程式就是這樣寫出來的,但是今天在學習wol的時候,我才發現,我原來的觀點是錯誤的,於是,我發起了對udp資料廣播的重新認識:

下面給出windows下udp傳送廣播資料**.

udp廣播位址為255.255.255.255

通過setsockopt這個api設定乙個socket為廣播socket

setsockopt說明:

設定套介面的選項。

#include

int pascal far setsockopt( socket s, int level, int optname,

const char far* optval, int optlen);

s:標識乙個套介面的描述字。

level:選項定義的層次;目前僅支援sol_socket和ipproto_tcp層次。

optname:需設定的選項。

optval:指標,指向存放選項值的緩衝區。

optlen:optval緩衝區的長度。

///**示例

socket sock;

bool bbroadcast = true;

char  szbroadcast = "this is broadcast data!";

sockaddr_in sockaddr;

// create udp socket

// set udp broadcast optional

setsockopt(sock, sol_socket, so_broadcast/* broadcast data */, (char*)&bbroadcast, sizeof(bool));

// initial sockaddr_in

sockaddr.sin_family = af_inet;

sockaddr.sin_addr.s_addr = inet_addr(inaddr_broadcast);

sockaddr.sin_port = htons(8080); // broadcast port

sendto(sock, szbroadcast, strlen(szbroadcast), 0, (sockaddr*)&sockaddr, sizeof(sockaddr));

udp的socket資料傳輸

關於socket的配置 1 建立sokcet套接字 2 為建立的socket繫結位址與埠,指定傳輸的協議,一般採用af inet,資料的傳輸格式一般為 sock stream sock dgram 3 開啟檔案識別符號,並開始傳送資料 udp客戶端code include include inclu...

Linux 對於UDP的學習

udp 使用者資料報協議 沒有連線的,是面向資料報的,是不可靠 就是ip位址 埠號埠號 2位元組,也就是說範圍是0 65535 ssh伺服器,使用22埠 ftp伺服器,使用21埠 telnet伺服器,使用23埠 http伺服器,使用80埠 https伺服器,使用443埠 作業系統動態分配的埠號 檢視...

Linux 對於UDP的學習

ykitty 2019 01 07 08 51 10 分類專欄 linux 最後發布 2019 01 07 08 51 10首次發布 2019 01 07 08 51 10 版權 udp 使用者資料報協議 沒有連線的,是面向資料報的,是不可靠 就是ip位址 埠號埠號 2位元組,也就是說範圍是0 65...