标题: wattcp可以编写multicast程序吗?
[打印本页]
作者: sata25
时间: 2006-6-22 11:37
标题: wattcp可以编写multicast程序吗?
我下载了wattcp实模式的开发包,可找遍了里面的头文件,没有发现multicast的定义,不知道该开发包是否支持传建multicast型的socket,是不是只有该开发包的文档(文档不是免费的)里面才有相关描述呢?
谢谢!
作者: asbai
时间: 2006-6-22 12:33
milticast最棘手的部分应该都在各节点的路由算法上,每个节点都需要为每一个多播地址维护一张表,并且这张表经常要跨越很多节点进行比较复杂的更新。
对于通信双方来说(服务器和客户端),多播好像不需要协议栈实现什么额外的组件。对终端来说通信流程基本与平时一样。
winsock API之所以专门搞出个Multipoint部分,是因为微软扩展了winsock接口的用途,力图使它成为各种通信协议都能使用的通用编程接口。为了能够适应如:ATM、HDLC、ST-II光缆等各种通信协议,winsock必须维护一个胖界面。
不过,如果兄台打算开发的是multicast的client端,由于要在一个组播地址上侦听,IP层还是需要稍稍了解一下游戏规则。要写server端的话就不大用操心这些问题了(这时组播地址是sendto用的)。
wattcp的文档(收费的那种)这个坛子里就有的下,自己search一把。
作者: sata25
时间: 2006-6-22 15:30
多谢指点,我的client端是在dos下,而server是在windows下的服务,server需要通过multicast方式向client端发送数据的。不知道是否client端用wattcp比较妥当,便于后续升级维护。
作者: sata25
时间: 2006-6-22 16:10
找到文档了,谢谢!不过文档中也没有说明是否支持multicast,头文件中也没有说明,照理说multicast应当有个类似AddGroup函数的,开发包中没有,设定TTL也没有,难道有什么技巧或是未公开的东西,还请各位高人指点。谢谢!
作者: asbai
时间: 2006-6-22 16:44
有类似AddGroup这种接口,同时提供其它很多API和选项,实际上是因为Winsock为了让经典socket调用通用化(支持更多协议)而设计的。
经典socket里是不需要有这些胖界面的。client只需要象往常一样bind到组播地址就好了,但因为组播地址不是本机地址,client需要先setsockopt一下,告诉之后的bind这不是一个本机专用地址。
也就是说经典socket里,组播server端不用作任何特别的事情,只要bind到组播地址然后sendto和recvfrom就好了;client端要在平常bind之前设置一下选项,告诉bind以下地址不是本机IP。
wattcp是开源的吧?看以下它的 setsockopt 和 ioctl 这种地方有没有相关选项就应该了了。
作者: sata25
时间: 2006-6-23 14:19
下周我来试试看,谢谢asbai的热心帮助先。