linux socket 如何发送分组广播

linux socket 如何发送分组广播,第1张

下面还是先看一下代码 基本和网上搜到的一样初始化static struct sockaddr_in remote_addr//远程地址static struct sockaddr_in local_addr//若本地要帮定端口要用memset(&remote_addr,0,sizeof(remote_addr))remote_addr.sin_family = AF_INETremote_addr.sin_addr.s_addr = inet_addr("225.100.1.6")//广播地址remote_addr.sin_port = htons(6789)//目的端口memset(&local_addr,0,sizeof(local_addr))local_addr.sin_family = AF_INETlocal_addr.sin_addr.s_addr =htonl(INADDR_ANY)local_addr.sin_port = htons(4321)//本地发送端口4321if( (sockfd=socket(AF_INET,SOCK_DGRAM,0))<0 ){BROADCAST_PRINT(( "can't open datagram socket rtn=%d\n", sockfd))}else{bind(sockfd,(struct sockaddr *)&local_addr,sizeof(local_addr) )1。仅仅凭上面代码发送返回肯定要失败的,应为还没有添加分组广播的路由在linux命令行中运行 route add -net 224.0.0.0 netmask 224.0.0.0 dev eth02。还有就是看到一些人提到本地发送端口绑定的问题

那么如果在使用该机器之前,先给登录到该机器的所有其他用户发送一个消息,告诉其他用户(如果存在的话)你将使用该机器。这样如果有其他用户登录到该机器,他们就会收到该信息。这样能有效的避免一些冲突。首先,你可以通过who命令查看登录到该机器的所有用户。比如:# whoroot pts/0 Jun 13 04:28 (10.56.226.25)root pts/1 Jun 13 22:32 (10.140.1.37)root pts/2 Jun 13 23:31 (10.140.2.70)root pts/3 Jun 13 23:56 (10.140.2.70)执行who命令,就会返回上面的结果。表示有三个用户登录到该机器,有个用户有两个登录Console。其次,广播消息#wall 'I will use this host. If somebody is using it, pls let me know. Thanks a lot.'Broadcast message from root (pts/3) (Fri Jun 13 23:57:13 2008):

使用桥接上网的话需要配置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/7656815.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存