求一linux接收udp广播程序(提供模板)

求一linux接收udp广播程序(提供模板),第1张

哥们,没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

使用桥接上网的话需要配置linux系统的IP,具体步骤如下:

1,在命令行模式下或者桌面上进入终端模式,找到/etc/sysconfig/network-script/ifcfg-eth0文件;

2,使用vi打开文件 vi ifcfg-eth0,注意,有的linux系统这个文件可能不带ifcfg前缀。

3,需要改动的:

BOOTPROTO=static

#默认是dhcp,自动获取,自动获取需要将网络模式改桥接模式

需要增加的:

IPADDR=192.168.1.10 #地址是自己设置的

NETMASK=255.255.255.0

修改好之后保存退出。

天在别的朋友电脑拷贝一个RedHat系统,部署到VMware虚拟机以后,连不上网,通过ifconfig命令,查看结果,如图所示:

ifconfig

然后,我想尝试一下,在虚拟机中ping 本地物理机地址,结果如图。

ping localhost

尝试了很多方法,花了2个小时的功夫。终于找到了原因。

以下是我解决问题的步骤,分享出来,帮助大家尽快解决问题,与同样遇到过这个问题的同胞共勉!

总结起来,主要有4步:

1、使用chkconfig iptables off 关闭Linux系统防火墙,并且确保windows防火墙一样关闭。

2、将network选项中默认的“NAT链接方式”改为“网桥链接”,如图所示。

这里写图片描述

3.root 用户登录,修改网络配置文件,命令如下

[root@zb ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

然后,在window中通过cmd >ipconfig 可以看到 “以太网适配器 VMware Network Adapter VMnet8:” ip地址为 “192.168.139.1”

ipconfig

按照上图的ip地址修改配置文件,红色部分为修改过内容。

DEVICE="eth0" BOOTPROTO="static" // 静态设置ip,下面配置 BROADCAST=192.168.253.255 // 广播地址 *IPADDR=192.168.139.1* // ip地址,手动指定,避免每次动态分配 NETMASK=255.255.255.0 // 子网掩码 NETWORK=192.168.253.0 // 网络号 *GATEWAY=172.18.8.254* // 网关 HWADDR="00:0C:29:8D:07:8E" NM_CONTROLLED="yes" ONBOOT="yes" // 系统启动后,自动启动网卡 TYPE="Ethernet" UUID="73869271-edc7-45a1-bbc7-1691af066ae2"

4、修改完成以后,千万记住,还有一步,重启服务!

[root@zb ~]# service network restart

成功重启以后,测试效果如图:

service network restart

测试结果,使用ifconfig查看,如下图所示,成功显示internet地址:

这里写图片描述


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8488173.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-17
下一篇2023-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存