2024年3月22日发(作者:)

一,使用socket发送广播包的方法:

1,sock = socket(AF_INET,SOCK_DGRAM,0);构建upd套接字

setsockopt(sock, SOL_SOCKET, SO_BROADCAST,(char*)&bbroadcast,sizeof(int));

设置套接字属性,使之能发送广播包:4个255或

如192.168.136.255的包。也可以接受广播包,但是得保证广播包的端口号是自己绑

定的端口号。

在windows下测试结果如上,而在Ubuntu下,有时候能发送4个255的广播包,

有时候就只能发送192.168.136.255的包。原因不明。

注:Ubuntu下这样也可以发送4个255的广播包,前提是ip地址是自动获取或是手

动填写的,而不能用ifconfig临时分配。

这样设置,也可以接受网络上的广播包,只能接受发往套接字bind的端口的广播包。

2,fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP)),构建链路层套接字,

就可直接发送广播包。

源码:1,

#include // for sockaddr_in

#include // for socket

#include // for socket

#include // for printf

#include // for exit

#include // for bzero

#include

#include

#include

#include

#define HELLO_WORLD_SERVER_PORT

#define BUFFER_SIZE 1024

int main(int argc, char **argv)

{

int err = 0;

6660