当前位置: 技术问答>linux和unix
一个关于linux多播的问题
来源: 互联网 发布时间:2017-01-18
本文导语: 以下是linux多播的测试代码,分为服务器端和客户端,问题是客户端收不到任信息,我想问的是在用多播之前还需不需要进行一些相关的网络配置,我不知道到底是配置的问题还是程序的问题 客户端: #define MCA...
以下是linux多播的测试代码,分为服务器端和客户端,问题是客户端收不到任信息,我想问的是在用多播之前还需不需要进行一些相关的网络配置,我不知道到底是配置的问题还是程序的问题
客户端:
#define MCAST_PORT 8888
#define MCAST_ADDR "224.0.0.88" /*一个局部连接多播地址,路由器不进行转发*/
#define MCAST_INTERVAL 5 /*发送间隔时间*/
#define BUFF_SIZE 256 /*接收缓冲区大小*/
int main(int argc, char*argv[])
{
int s; /*套接字文件描述符*/
struct sockaddr_in local_addr; /*本地地址*/
int err = -1;
s = socket(AF_INET, SOCK_DGRAM, 0); /*建立套接字*/
if (s == -1) {
perror("socket()");
return -1;
}
/*初始化地址*/
memset(&local_addr, 0, sizeof(local_addr));
local_addr.sin_family = AF_INET;
local_addr.sin_addr.s_addr = htonl(INADDR_ANY);
local_addr.sin_port = htons(MCAST_PORT);
/*绑定socket*/
err = bind(s,(struct sockaddr*)&local_addr, sizeof(local_addr)) ;
if(err
客户端:
#define MCAST_PORT 8888
#define MCAST_ADDR "224.0.0.88" /*一个局部连接多播地址,路由器不进行转发*/
#define MCAST_INTERVAL 5 /*发送间隔时间*/
#define BUFF_SIZE 256 /*接收缓冲区大小*/
int main(int argc, char*argv[])
{
int s; /*套接字文件描述符*/
struct sockaddr_in local_addr; /*本地地址*/
int err = -1;
s = socket(AF_INET, SOCK_DGRAM, 0); /*建立套接字*/
if (s == -1) {
perror("socket()");
return -1;
}
/*初始化地址*/
memset(&local_addr, 0, sizeof(local_addr));
local_addr.sin_family = AF_INET;
local_addr.sin_addr.s_addr = htonl(INADDR_ANY);
local_addr.sin_port = htons(MCAST_PORT);
/*绑定socket*/
err = bind(s,(struct sockaddr*)&local_addr, sizeof(local_addr)) ;
if(err