高分求使用SOCKET API实现组播与广播的方法和源码.up,gz有分.
如何使用SOCKET API来实现组播与广播.
问题点数:200、回复次数:56Top
1 楼nanjianhui(nan)回复于 2002-09-11 15:51:06 得分 80
留下email,我给你发过去!!!Top
2 楼fly_bird([阿弥陀佛])回复于 2002-09-11 15:59:23 得分 8
我也要,如何在一个程序里,实现UDP的广播何接受。
将另开贴给分
sjeclay@163.comTop
3 楼black_fox(天堂隔壁)回复于 2002-09-11 15:59:54 得分 20
http://www.codeguru.com/network/MulticastSocket.shtml
这有一个组播的类Top
4 楼nanjianhui(nan)回复于 2002-09-11 16:04:20 得分 0
to fly_bird:
我已经给你发了,看看吧!!!Top
5 楼wuxuan(真心英雄)回复于 2002-09-11 16:07:00 得分 0
谢谢,我一定给重分.
purenet@163.comTop
6 楼nanjianhui(nan)回复于 2002-09-11 16:13:39 得分 0
to wuxuan:
我已经给你发了,请查收!!!Top
7 楼fly_bird([阿弥陀佛])回复于 2002-09-11 16:17:47 得分 0
nanjianhui(nan)
我将另开贴给分!
请关注!Top
8 楼fly_bird([阿弥陀佛])回复于 2002-09-11 16:21:10 得分 0
下面的代码为何不能接受呢?发肯定没有问题的了!可怎么不能接受呢?
创建套接字:
int Sockfd;
sockaddr_in hostip;
Sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(Sockfd==INVALID_SOCKET){
AfxMessageBox("创建套接口失败!");
}
hostip.sin_family=AF_INET;
hostip.sin_addr.s_addr=INADDR_ANY;
hostip.sin_port=htons(12180);
bool optval=TRUE;
setsockopt(Sockfd,SOL_SOCKET,SO_REUSEADDR,(char FAR *)&optval,sizeof(optval));
if(bind(Sockfd,(struct sockaddr *)&hostip,sizeof(hostip))==SOCKET_ERROR){
AfxMessageBox("主机绑定错误!");
}
if(setsockopt(Sockfd,SOL_SOCKET,SO_BROADCAST,(char FAR *)&optval,sizeof(optval))==SOCKET_ERROR){
AfxMessageBox("广播通信设置产生错误!");
}
发送消息:
sockaddr_in destip;
int state;
destip.sin_family=AF_INET;
destip.sin_addr.s_addr=INADDR_BROADCAST;
destip.sin_port=htons(12181);
if(state=sendto(sock,(char *)buffer,buffersize,0,(struct sockaddr *)&destip,sizeof(destip))==SOCKET_ERROR){
AfxMessageBox("数据发送失败");
}
接收消息:
int state;
sockaddr *sa;
int salen;
char buffer[15];
int buffersize;
buffersize=15;
if(state=recvfrom(sock,(char *)buffer,buffersize,0,sa,&salen)==SOCKET_ERROR){
AfxMessageBox("数据接收失败");
}
关闭套接字:
closesocket(sock);
Top
9 楼liuyup(天煞)回复于 2002-09-11 16:25:08 得分 2
gzTop
10 楼wuxuan(真心英雄)回复于 2002-09-11 16:59:50 得分 0
这是一个多播的类,大家可以看看.
http://www.codeproject.com/internet/multicastsocket.aspTop
11 楼liuwei662656(天堂)回复于 2002-09-11 17:42:45 得分 2
同志,我也想要一个可以吗?
liuwei662656@etang.com
================================================================
CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!
★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。
★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。
Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]
Top
12 楼liuwei662656(天堂)回复于 2002-09-11 17:43:25 得分 0
同志,我也想要一个可以吗?
liuwei662656@etang.com
================================================================
CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!
★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。
★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。
Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]
Top
13 楼chenm001(CM)回复于 2002-09-11 17:56:26 得分 10
多播很简单的,核心代码如下(接收部分)
Remote.sin_family=AF_INET;
Remote.sin_port=htons(MCASTPORT);
Remote.sin_addr.s_addr=inet_addr(MCASTADDR);
if((SockM=WSAJoinLeaf(Sock,(sockaddr*)&Remote,sizeof(Remote),
NULL,NULL,NULL,NULL,JL_BOTH))==INVALID_SOCKET) {
closesocket(Sock);
WSACleanup();
return(-3);
}
//WSAAsyncSelect(Sock,Handle,WM_SOCK_MSG,FD_READ|FD_WRITE|FD_CLOSE);
Length=recvfrom(Sock,RecvBuf,BUFSIZE,0, (sockaddr*)&From,&dwFrom);
Top
14 楼chenm001(CM)回复于 2002-09-11 17:59:33 得分 0
忘了说了,上面的Sock也是一个UDP SOCKET,用来接收用的,SOCKM用来发送Top
15 楼sunyou(砂子)回复于 2002-09-12 14:00:42 得分 2
请给我一份
sunyou@etang.comTop
16 楼pzhou(笑猪)回复于 2002-09-12 14:56:39 得分 2
gzTop
17 楼mengxihe(濛溪河)回复于 2002-09-12 14:57:37 得分 2
up
gzTop
18 楼rocshaw(太阳鸟(抵制日货))回复于 2002-09-12 15:04:20 得分 2
upTop
19 楼coolc(石头里的魔)回复于 2002-09-12 15:29:33 得分 2
关注,
多谢各位Top
20 楼shaohua(流氓大亨文盲高官)回复于 2002-09-12 17:32:33 得分 2
能给我一份吗?我也愿意给分!!!
thanks.
itwxf@student.hunnu.edu.cn
Top
21 楼mucel(尽力尽为)回复于 2002-09-12 22:03:15 得分 2
请给我一份
molosam@263.netTop
22 楼learnerX(null)回复于 2002-09-12 22:04:10 得分 2
GZTop
23 楼hdsw21st(云淡风清)回复于 2002-09-13 00:23:36 得分 2
up!Top
24 楼hdsw21st(云淡风清)回复于 2002-09-13 00:24:45 得分 0
hdsw21st@sohu.com
Top
25 楼happynow(辉)回复于 2002-09-13 00:55:03 得分 2
up!Top
26 楼ln_changcheng(恶人魔)回复于 2002-09-13 09:28:51 得分 2
gz+up!!!Top
27 楼xiaopan()回复于 2002-09-13 09:59:12 得分 2
yym1320@163.com
thanks!Top
28 楼winthegame(120斤重的大青蛙)回复于 2002-09-13 10:12:12 得分 2
gzTop
29 楼wuxuan(真心英雄)回复于 2002-09-13 10:18:16 得分 0
如果大家感兴趣的话,请留下EMAIL,我整理一下大家的发言然后发送给大家Top
30 楼cococut(小鱼的天空)回复于 2002-09-13 10:36:59 得分 2
cococut@msn.comTop
31 楼aben456(金珠MERP)回复于 2002-09-13 10:40:10 得分 2
wangbj@snm.szptt.net.cn
多谢!Top
32 楼cunni(有谁见过彼得.潘)回复于 2002-09-13 10:47:04 得分 2
dongy@cbn.com.cn 多谢!Top
33 楼Chiun(青竹篱)回复于 2002-09-13 11:16:58 得分 2
rosa@infoking.com.cn 多谢!
Top
34 楼guzh()回复于 2002-09-13 12:19:09 得分 2
guzh@21cn.com
谢谢!!!Top
35 楼seculr(seculr)回复于 2002-09-13 13:33:32 得分 2
seculr@163.comTop
36 楼arvid_gs(west)回复于 2002-09-13 13:39:43 得分 2
arvid_gs@163.com
给我一份!!!Top
37 楼anyoshon(好学)回复于 2002-09-13 13:42:08 得分 2
不错,多谢!!!
aneicou@hotmail.comTop
38 楼yan_zg()回复于 2002-09-13 13:42:43 得分 2
yanzg1496@sina.com.cn
多谢
Top
39 楼Vc_God(上帝)回复于 2002-09-13 15:23:35 得分 2
superaf@163.com
谢谢!Top
40 楼hash_boy(Berserker)回复于 2002-09-13 15:46:18 得分 2
我要一份,谢谢。
cuiy@cbn.com.cnTop
41 楼flybusflybus(风)回复于 2002-09-13 16:41:59 得分 2
flybus@163.net
thx~
Top
42 楼jtg98g3(跳舞的青蛙)回复于 2002-09-13 17:36:32 得分 2
我也想要:qinwa588@163.com
Top
43 楼guiqing(坐行八万里)回复于 2002-09-13 22:07:16 得分 2
我也想要:doublege@sina.comTop
44 楼tonycxy()回复于 2002-09-13 22:20:55 得分 2
我也想要一个,tonycxy@yeah.netTop
45 楼JennyVenus()回复于 2002-09-13 22:21:43 得分 2
// 取得网卡列表
LANA_ENUM AdapterList;
NCB Ncb;
memset(&Ncb, 0, sizeof(NCB));
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (unsigned char *)&AdapterList;
Ncb.ncb_length = sizeof(AdapterList);
Netbios(&Ncb);
// 重置网卡,以便我们可以查询
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = AdapterList.lana[0];
if (Netbios(&Ncb) != NRC_GOODRET) {
return false;
}
// 准备取得接口卡的状态块
bzero(&Ncb,sizeof(Ncb));
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = AdapterList.lana[0];
strcpy((char *) Ncb.ncb_callname, "*");
struct ASTAT
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff[30];
} Adapter;
bzero(&Adapter, sizeof(Adapter));
Ncb.ncb_buffer = (unsigned char *)&Adapter;
Ncb.ncb_length = sizeof(Adapter);
// 取得网卡的信息,并且如果网卡正常工作的话,返回标准的冒号分隔格式。
if (Netbios(&Ncb) == 0)
{
memcpy(acMac, Adapter.adapt.adapter_address, 6);
return true;
}
else
{
return false;
}
---------------------
SOCKET s;
if((s = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET)
return false;
sendto(s, (const char *)&ai, sizeof(AuthInfo), 0,
(SOCKADDR *)&sin, sizeof(SOCKADDR));
closesocket(s);
SetLastError(0);
Sleep(1000);
sin.sin_addr.S_un.S_addr = INADDR_BROADCAST;
if(sendto(m_sck, (const char *)&ai, sizeof(AuthInfo), 0,
(SOCKADDR *)&sin, sizeof(SOCKADDR)) == SOCKET_ERROR){
return false;
}
Top
46 楼JennyVenus()回复于 2002-09-13 22:22:33 得分 2
//
//
// ^^ ^^ ^^^^^^ ^^^^ ^^^^^^^
// ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^
// ^^ ^^ ^^ ^^ ^^ ^ ^ ^^
// ^^ ^^ ^^ ^^ ^^ ^^
// ^^ ^^ ^^^^^ ^^ ^^
// ^^ ^^ ^^ ^^ ^^^^ ^^
// ^^ ^^ ^^ ^^ ^^ ^^
// ^^ ^^ ^^ ^^ ^^ ^^ ^
// ^^ ^^ ^^ ^^ ^^ ^^ ^^
// ^^^^^ ^^^^ ^^^ ^ ^^^^^^^
//
//
//
//
Top
47 楼mjk()回复于 2002-09-14 10:53:48 得分 2
有没有广播的源代码?Top
48 楼flyingcrean(flying鹤)回复于 2002-09-14 11:52:01 得分 2
能给我份么?
tina_arena@21cn.com
谢谢Top
49 楼noend(寻找中)回复于 2002-09-14 18:44:42 得分 2
cywhust@163.com
3xs^_^Top
50 楼float_leaf(leaf)回复于 2002-09-14 22:10:49 得分 2
可以给我也发一份么?哥们。
jjh3306@sina.comTop
51 楼uio45757(一条傻鱼)回复于 2002-09-14 22:23:47 得分 2
算我一份吧,,uio45757@etang.com
谢谢Top
52 楼missRainbowAgain(godness)回复于 2002-09-14 22:29:13 得分 2
我也想要
weimengni@eyou.comTop
53 楼fengge008(风歌)回复于 2002-09-14 22:42:32 得分 2
俺也要
fengge2724@sina.com
多谢了Top
54 楼jiansee(Jiansee)回复于 2002-09-14 22:47:43 得分 2
组播,广播的源码(发送和接收),谢谢!正头痛中。。。
zdenspace@yahoo.comTop
55 楼SamPony(HelloKitty)回复于 2002-09-15 09:37:22 得分 2
我也要!谢谢!
floatinsky@163.netTop
56 楼wuxuan(真心英雄)回复于 2002-09-16 11:23:52 得分 0
我已经给各位发去了源码,请查收,同时谢谢各位的关注.Top




