資源簡介
Linux下組播源碼,含客戶端和服務器
接收端 zb_recv.c
發送端 zb_recv.c

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
//#define?PORTNUM?5000
//#define?GROUPIP?“224.0.1.1“
#define?PORTNUM?1900
#define?GROUPIP?“239.255.255.250“
#define?BUFLEN?1024
#define?TESTNUM?10
int?main()
{
int?sock_id;
struct?sockaddr_in?addr?sender;
struct?ip_mreq?ipmr;
char?buf[BUFLEN];
socklen_t?len;
int?ret;
int?count;
/*?Step?1:?open?a?socket?and?bind?*/
if?((sock_id?=?socket(AF_INET?SOCK_DGRAM?0))?0)?
{
perror(“socket?error“);
exit(1);
}
memset((void*)&addr?0?sizeof(addr));
addr.sin_family?=?AF_INET;
addr.sin_addr.s_addr?=?htonl(INADDR_ANY);
addr.sin_port?=?htons(PORTNUM);
if?(bind(sock_id?(struct?sockaddr?*)&addr?sizeof(addr))?0)?
{
perror(“bind?error“);
exit(1);
}
/*?Step?2:?fill?in?a?struct?ip_mreq?*/
memset((void*)&ipmr?0?sizeof(ipmr));
ipmr.imr_multiaddr.s_addr?=?inet_addr(GROUPIP);?/*?multicast?group?ip?*/
ipmr.imr_interface.s_addr?=?htonl(INADDR_ANY);
printf(“ip?:%s\n“inet_ntoa(ipmr.imr_interface.s_addr));
/*?Step?3:?call?setsockopt?with?IP_ADD_MEMBERSHIP?to?support?receiving?multicast?*/
if?(setsockopt(sock_id?IPPROTO_IP?IP_ADD_MEMBERSHIP?&ipmr?sizeof(ipmr))?0)?
{
perror(“setsockopt:IP_ADD_MEMBERSHIP“);
exit(1);
}
/*?Step?4:?call?recvfrom?to?receive?multicast?packets?*/
len?=?sizeof(sender);
count?=?0;
while?(count? {
ret?=?recvfrom(sock_id?buf?BUFLEN?0?(struct?sockaddr?*)&sender?&len);
buf[ret]?=?‘\0‘;
if?(ret?0)?
{
perror(“recvfrom?error“);
exit(1);
}
printf(“addr?ip?:%s\n“inet_ntoa(ipmr.imr_interface.s_addr));
printf(“ip?:%s\n“inet_ntoa(ipmr.imr_interface.s_addr));
printf(“%d.?Receive?from?%s:%u\n“?count
inet_ntoa(sender.sin_addr.s_addr)?ntohs(sender.sin_port));
printf(“\tpacket?data:?%s\n“?buf);
}
/*?Step?5:?call?setsockopt?with?IP_DROP_MEMBERSHIP?to?drop?from?multicast?*/
if?(setsockopt(sock_id?IPPROTO_IP?IP_DROP_MEMBERSHIP?&ipmr?sizeof(ipmr))?0)?
{
perror(“setsockopt:IP_DROP_MEMBERSHIP“);
exit(1);
}
/*?Step?6:?close?the?socket?*/
close(sock_id);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7671??2013-05-12?10:01??zb_socket\zb_recv
?????文件???????2227??2013-05-12?10:01??zb_socket\zb_recv.c
?????文件???????7469??2013-05-12?09:36??zb_socket\zb_send
?????文件???????1150??2013-04-24?12:56??zb_socket\zb_send.c
?????文件????????132??2010-08-07?11:05??zb_socket\說明.txt
?????目錄??????????0??2013-07-15?17:15??zb_socket
-----------?---------??----------?-----??----
????????????????18649????????????????????6
- 上一篇:計算機畢業論文參考文獻(中英文對照)
- 下一篇:libsvm-3.20.zip
評論
共有 條評論