下面是乙個多播伺服器的例子。多播伺服器的程式設計很簡單,建立乙個資料報套接字,選定多播的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...