2010-06-24 34 views
0

在C++中使用使用WINDOWS32使用UDP Windows套接字库是有办法给客户的路由信息​​到另一个客户端建立客户端之间的连接,而无需借道服务器C++ windows32 winsock UDP路由?

澄清:

服务器 - 等待电脑并给出路由信息 - 一个分离的服务器 客户端 - 发送ack请求并等待路由信息 - 一个普通的用户计算机

但确定,因为它不可能给路由信息给客户端互连客户端,而不需要数据通过服务器转发?

+0

请说明您的问题。你在寻找一些P2P解决方案,还是想用IP头来玩? – 2010-06-24 02:40:52

+0

明确路由数据包的意义是什么?这回滚了数十年的网络工程工作。 – wallyk 2010-06-24 02:51:11

+0

这将消除服务器上的开销,并提高往返时间 – erai 2010-06-24 02:58:57

回答

0

简短的回答:没有

龙答:是的---但是你必须使用IPPROTO_IP,不IPPROTO_UDP。使用在setsockopt的()IP_OPTIONS选项设置source routing

+0

谢谢生病尝试 – erai 2010-06-24 02:53:29

1

简短的回答:没有。

龙答:无论你在你的UDP数据包中包含的信息,在传输层它只是一个IP数据包,你的网卡会一巴掌就可以了相应的头文件,并将其发送的道路上。除非主机直接相互连接,网络的拓扑结构将决定它有多少啤酒花(路由器/交换机),以到那里。

附录:

我不知道你的服务器是什么意思(我把它读作“路由器”开始,但是你可以很容易地一直在谈论一个域名服务器(DNS))。如果您尝试避免DNS查找,则可以通过直接提供IP地址(假设您知道)来轻松完成此操作。然而,DNS查找是一次性的过程 - 一旦已知IP地址,DNS主机不参与任何形式的路由UDP数据包。

+0

嗯好的,但我不想要使用服务器作为路由器即时通讯要求使用它来连接客户端,不使用它作为路由器 – erai 2010-06-24 02:51:17

+0

@erai:我仍然非常困惑你的术语。如果客户端不直接相互连接(例如,使用单一的A→B以太网电缆或ad hoc WiFi连接),则他们必须通过至少一个路由器(交换机/集线器等)互相连接。我不明白你计划如何避免这种情况。 – 2010-06-25 20:18:17