乙個多播例子的伺服器端與客戶端

2021-09-30 11:47:36 字數 2929 閱讀 5962

下面是乙個多播伺服器的例子。多播伺服器的程式設計很簡單,建立乙個資料報套接字,選定多播的ip位址和埠,直接向此多播位址傳送資料就可以了。多播伺服器的程式設計,不需要伺服器加入多播組,可以直接向某個多播組傳送資料。

下面的例子持續向多播ip位址"224.0.0.88"的8888埠傳送資料"broadcast test data",每傳送一次間隔5s。

/*  

*broadcast_server.c - 多播服務程式  

*/  

#define mcast_port 8888;  

#define mcast_addr "224.0.0.88"//*乙個區域性連線多播位址,路由器不進行***/  

#define mcast_data "broadcast test data" /*多播傳送的資料*  

#define mcast_interval 5                 /*傳送間隔時間*/  

int main(int argc, char*ar**)  

memset(&mcast_addr, 0, sizeof(mcast_addr));/*初始化ip多播位址為0*/  

mcast_addr.sin_family

= af_inet

;        /*設定協議族類行為af*/  

mcast_addr.sin_addr.s_addr

= inet_addr

(mcast_addr);/*設定多播ip位址*/  

mcast_addr.sin_port

= htons

(mcast_port); /*設定多播埠*/  

/*向多播位址傳送資料*/  

while(1)          

sleep(mcast_interval);            /*等待一段時間*/  

}  return 0;  

} 11.3.6  乙個多播例子的客戶端

多播組的ip位址為224.0.0.88,埠為8888,當客戶端接收到多播的資料後將列印出來。

客戶端只有在加入多播組後才能接受多播組的資料,因此多播客戶端在接收多播組的資料之前需要先加入多播組,當接收完畢後要退出多播組。

/*  

*broadcast_client.c - 多播的客戶端  

*/  

#define mcast_port 8888;  

#define mcast_addr "224.0.0.88"     /*乙個區域性連線多播位址,路由器不進行***/  

#define mcast_interval 5            /*傳送間隔時間*/  

#define buff_size 256              /*接收緩衝區大小*/  

int main(int argc, char*ar**)  

/*初始化位址*/  

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 

<

0)  

/*設定回環許可*/  

int 

loop= 1

;  err

= setsockopt

(s,ipproto_ip, ip_multicast_loop,&loop, sizeof(loop));  

if(err 

<

0)  

struct ip_mreq mreq;                   /*加入廣播組*/  

mreq.imr_multiaddr.s_addr

= inet_addr

(mcast_addr); /*廣播位址*/  

mreq.imr_inte***ce.s_addr

= htonl

(inaddr_any);  /*網路介面為預設*/  

/*將本機加入廣播組*/  

err= 

setsockopt

(s, ipproto_ip, ip_add_membership,&mreq, sizeof   

(mreq));  

if (err 

<

0)  

int 

times= 0

;  int 

addr_len= 0

;  char buff[buff_size];  

int n= 

0;  

/*迴圈接收廣播組的訊息,5次後退出*/  

for(

times= 0

;times

<

5;times++)  

/*列印資訊*/  

printf("recv %dst message from server:%s\n", times, buff);  

sleep(mcast_interval);   

}  /*退出廣播組*/  

err= 

setsockopt

(s, ipproto_ip, ip_drop_membership,&mreq, sizeof   

(mreq));  

close(s);  

return 0;  

}

C 的乙個客戶端和伺服器端例子

tcpclient和tcplistene的例子 參考 c 入門經典一書 1 server端 控制台程式 using system using system.collections.generic using system.linq using system.text using system.net...

客戶端與伺服器端通訊

關係圖 傳送 邏輯管理器 處理邏輯傳送指令 指令解析管理器 根據協議xml解析指令成二進位制資料 把二進位制資料傳給伺服器 接收 伺服器傳送二進位制資料到客戶端 指令解析管理器 根據協議xml解析二進位制資料 根據解析資料對映到邏輯類來處理 2 1 3 20 2,2 21 1,1,2 指令名和指令名...

客戶端與伺服器端的區別

一般來說,客戶端就是我們使用的電腦 包括我們使用的瀏覽器ie,firefox 伺服器端就是存放網頁與資料庫資料的伺服器 電腦上裝的魔獸程式就是客戶端程式,你連線的伺服器 九城的伺服器 就是是伺服器端程式 我們通常所說的動態 設計一般都是b s結構的,b是browser的縮寫,就是客戶端程式。s是se...