此程序是个简单udp广播发送服务器,测试自动获取网卡的广播地址
哥们,没bind你收啥?你又把my_addr传给recvfrom干啥(该传their_addr).我给你写了个
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
int main()
{
int n, fd
socklen_t cli_addr_len
char buf[1024] = {0}
struct sockaddr_in servaddr, cliaddr
if((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
printf("socket error!\n")
exit(0)
}
servaddr.sin_family = AF_INET
servaddr.sin_addr.s_addr = htonl(INADDR_ANY)
servaddr.sin_port = htons(9999)
bind(fd, (struct sockaddr *)&servaddr, sizeof(servaddr))
while(1)
{
cli_addr_len = sizeof(cliaddr)
n =recvfrom(fd, buf, 1024, 0, (struct sockaddr *)&cliaddr, &cli_addr_len)
printf("%d\n", n)
}
}
这个程序只能收到发往本机IP地址和广播地址的端口为9999的数据包,如果你要监听局域网中的所有广播包(任意端口),可以用原始套接字,我前两天正好写了个,功能很强大哦:),已经是个嗅探器了,你用的时候加上 -u 选项就可以了。
famdestiny.cublog.cn
下列范例使用 UdpClient,在通讯端口11000传送UDP 资料包至多点传送位址群组 224.268.100.2。它传送命令列上指定的信息字串。
下列范例使用 UdpClient,在通讯端口 11000 监听广播到多点传送位址群组 224.168.100.2 的 UDP 资料包。它接收信息字串,并将信息写入主控台 (Console)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)