如题
解决方案 »
- 通讯控制到Updatedata(TRUE/FALSE)处报错 忽略后可运行 求帮助
- 如何实现邮件附件的下载 VC?
- 小数点四舍5入,怎么实现或者有什么函数
- 组合框的问题
- m_Recordset=m_Command->Execute(.....); 结果集数据指针不能往前移动MovePrevious();求助!!
- 请问当我用鼠标拖住窗口的边沿改变大小时发送什么消息(请教高手)
- Rational Rose中的Sterotype是什么意思?分数送给第一个解释清楚的人。
- 在程序中,怎样才可以看到WndProc(。。。。)函数,我想通过发消息,同时对应这个函数的处理部分?
- 奇怪问题!高手来看看
- 我已经装了MSDN,如何才能不用MSDN的光盘就能看例子?
- 我與MM的聊天記錄
- 如何实现一个“控制台”程序(or系统)?
ReceiveFrom(buff,sizeof(buff),(LPSOCKADDR)&client,sizeof(sockaddr_in),flag);里面的参数你应该都明白吧 不明白这个问题你也不用问了 去学基础吧!
在通常的网络配置环境下,网关设备一般都不会转发广播包,也就是说,跨网段的广播收发是不现实的,如果你非要用UDP数据报来发送类似广播的东西,建议你看看 组播 (Multicast ),这个可以跨网段传输,前提也是需要网关设备转发组播包,但是与广播包不同的是,开启组播包转发的网关设备普遍的多
我从来不会因为一个问题的难易而去恶意揣测提问者的智商,我想你是误会了
另外,如果你成功接收了跨网段的“广播”包(即 Broadcast),还望不吝赐教,谢谢
估计是本地IPX封包经过平台程序封装为TCP/IP数据包发送,通过某种中间转发机制到达目的,再由平台程序解包为IPX包送到游戏程序。
上面所说的“某种中间转发机制”,可能是服务器,也可能是服务器仅在最初创建房间时协助“选举”主机过程,一旦主机被“选举”确定(或者会把所有房间内的机器通过某种选举机制确定其各自的权值),服务器退出前台,不负责转发,转发工作由被“选举”出来的主机承担以上仅仅是猜测,以前用过浩方,但没具体研究过,很可能我说的完全是错误的,但是有一点是确定的,这样的需求,不会在对战中选择UDP数据包,不管是广播还是组播,都不会。
以上均是推测,主要是对游戏建立方不需要运行Battle.lan感到费解,想知道这个程序在加入方到底做了什么工作,能够主动获取到建立方的通信数据(因为对方没有运行额外程序,当然是游戏程序自己主动发送的咯,所以想到了广播)
在通常的网络配置环境下,网关设备一般都不会转发广播包.
这个 “一般”是什么意思?
上面是你的有的原话 ,我不知道你的意思是网关不转发内部的包,还是不接收外部的包。
那一定至少有一台公网服务器,而且这台服务器就算不做转发,也得做初期的“注册”或者“选举”工作可以确定没有,你可以到网上下一个Battle.lan看一下,如果A和B要联机游戏,A直接在局域网中建立游戏,B运行Battle.lan填入对方IP,再手动启动游戏,在局域网中就能看到A建立的游戏,即使AB均不能访问外网的时候,只要各自局域网通信畅通,依然可以通过Battle.lan联机你说的浩方那种方式我能理解一点,但是对Battle.lan这种不对A进行改造就能让B连上A的技术比较感兴趣
即使AB均不能访问外网的时候,只要各自局域网通信畅通,依然可以通过Battle.lan联机那么这两个局域网不通过公网怎么连通???!!!比如说我在家里,把ADSL关掉,你在家里,把你的外网页断掉,我们只在各自的内网里,然后你建游戏,我启动Battle.lan,我就能加入你建立的游戏???天哪。完全颠覆了我对TCP/IP的基本理解
我说的“一般”,是指网关设备出厂时都会设置为“不转发广播包”,网关设备在现场部署时,没有特殊要求的话,管理员不会修改这个设置,甚至有些网关设备根本没有这个设置,默认就不转发广播包至于你说的“上面是你的有的原话 ,我不知道你的意思是网关不转发内部的包,还是不接收外部的包。”
我们都知道,网关设备至少有2个或者2个以上的 Interface 来连接2个或2个以上的网络,Interface 之间不传递广播包,就是不转发广播包的意思,既然都不转发了,自然不存在接收的问题
/ \
路由器 路由器
/ | \ / | \
A1 A2 A3 B1 B2 B3的结构下,让A1和B1就像在一个子网内一样的进行通信(至少一台主机上的应用程序"认为"自己是在子网内工作)的
你具体可以抓包看看
我说的“一般”,是指网关设备出厂时都会设置为“不转发广播包”,网关设备在现场部署时,没有特殊要求的话,管理员不会修改这个设置,甚至有些网关设备根本没有这个设置,默认就不转发广播包
那好 ,你也承认,网关可以发送局域网内数据包了。(别说会么默认设置,我们在讨论如何接收,而不是实际有多少局域网可以发送出来被你接收到 OK?)
更特殊一点 网关可以指定某些端口用于监听,或连接内外网的特定IP Port。这个没错吧。那么你认为得到其他局域网广播的难点在什么地方?
要点:
1、A机不知道B机上Battle.lan的存在(甚至可以不知道B机的存在)。这一点是显而易见的,因为我们的程序只是在B机上运行,不对A机进行任何改造。
2、A机上的游戏程序本身(我们未对其进行干涉)能对B机进行回应To:minger909(惜之):
你的意思是跨网段接收广播包是可实现的,能具体介绍个例子吗?Battle.lan在各高校中普遍使用,很少听到不成功的例子,而这种情况下使用者一般是无法干涉网关的设置的TO:neil_cn(Neil):
我开始想这个问题的时候抓过包了,魔兽建立游戏后首先发送的是UDP广播包,所以我才跑来问这个问题,至于游戏开始后的通信、用Battle.lan和不用时双方的数据包等有待进一步分析
如果广播报文经过交换机转发到达了目的网络,由于交换机也隶属于此子网,交换机会接收该广播报文,而且由于交换机的VLAN 功能要隔绝广播域,通常不会继续将报文转发到该网络上去广播。通过配置,用户可以选择将广播报文转发到网络上广播另外,关于你说的抓包,没有进一步的数据包的信息的话不好分析判断
我们换个思路
一般在内网抓包是不能跨网段的(不要太深层次去理解我的话,用最一般的想法)
不过之前看到一篇文章讲用WINPCAP抓包的时候
可以通过在网关那监听的方法来抓取相邻网段的数据包
我们知道的是
WAR3在建立主机后会发送UDP包
那么如果上面的监听成功
这样再连接就是没有“理论问题”的了不过很不小心
怎么监听没注意唉~~