首页 文章

几个UDP套接字,绑定到同一个端口?

提问于
浏览
0

首先 - 它不是“如何绑定到另一个软件的端口”的问题 .

现在,我有一个客户端 - 服务器应用程序,基于TCP,我想使它成为UDP,但我错过了一些东西..

我有2个规则(我把它)到这个应用程序:
1)"server"可以留在路由器后面没有任何端口转发配置 .
2)"client"只能收听一个端口 .

在TCP中,我这样做:
1)服务器在端口X上打开与客户端的初始连接 .
2)当客户端想要打开到服务器的通信通道时,它使用初始套接字向服务器请求新的套接字 .
3)服务器创建一个新的套接字并连接到端口X上的客户端.4)客户端在端口X上接受这个新连接,现在客户端在这个新套接字上与服务器通信 .

这样我可以在同一个端口上有多个连接 .

在UDP中,我有一点问题..
1)服务器在端口X上将初始连接dgram发送到客户端 .
2)当客户端想要打开到服务器的通信通道时,它将新套接字的请求发送到初始套接字的addr .
3)服务器接收消息,创建一个新的udp套接字,并使用它在端口X上向客户端发送数据 .
4)客户端收到新的dgram,并且......?

基本上我现在想要发生的是"accept"这种联系 . 意思是:创建一个新的UDP套接字,将它也绑定到端口X,并仅从该特定的传入套接字addr(ip,port)接收数据 . 但我不能这样做因为我不能将多个套接字绑定到同一个端口 .
那么在一个端口上创建多个udp连接的方法是什么? (在网络方式,不只是创建图表的环形缓冲区并发送到正确的套接字)

谢谢 :)

1 回答

  • 4

    由于UDP是无连接协议,因此在步骤4中检查UDP消息的内容并确定如何处理它 . 换句话说,消息类型仅由其内容定义 .

    但是,我觉得你的整个设计有点不对劲 . 客户端更常见于防火墙(仅仅因为存在比服务器更多的客户端) . 如果您需要将服务器置于防火墙之后,则只需将防火墙配置为允许连接到该组端口 . 即使您只打开了一个端口,也没有什么能阻止客户端多次并行连接到同一服务器端口 .

相关问题