使用Stun的服务器自反传输

时间:2018-05-05 09:48:35

标签: udp webrtc udpclient stun

我正在尝试开发自己的Lite-ICE客户端。我能够获得STUN响应,它给我的服务器反身地址。我担心的问题是在那之后的步骤。

所以,我已经从分配给我的STUN客户端的STUN服务器收到IP1和Port1作为我的服务器自反地址,本地地址为L-IP1和L-Port1。

我理解如果L-IP1和L-Port1被多路复用以向/从远程服务器发送/接收非STUN消息,它是如何工作的。

如果我想要另一个应用程序,一个完全独立的进程来使用相同的绑定怎么办?那么,我可以启动另一个应用程序来将UDP端口绑定到L-Port1吗?如果是这样,应用程序(STUN)和其他应用程序是否会从目标设置为IP1和Port1的远程服务器接收消息(从远程服务器的角度来看)?那个不理解消息类型或方法的人,只是忽略它?这是正常的吗?

1 个答案:

答案 0 :(得分:1)

  

如果我想要另一个应用程序,一个完全独立的进程来使用相同的绑定怎么办?

通常,每个应用程序都可以使用不同的本地端口获取自己的绑定。

  

那么,我可以启动另一个应用程序将UDP端口绑定到L-Port1吗?

如果另一个进程的套接字绑定到同一本地端口,您将收到套接字绑定错误。有很多方法,但请继续阅读,这不是你想要的。

  

如果是这样,应用程序(STUN)和其他应用程序是否会从目标设置为IP1和Port1的远程服务器接收消息(从远程服务器的角度来看)?

您可以使用SO_REUSEADDR选项。但是,如果有两个进程具有到同一本地UDP端口的套接字,则该端口的传入数据包将路由到任一套接字。 (第一个调用recvfrom获取数据包 - 否则,它是非确定性的。)

  

那个不理解消息类型或方法的人,只是忽略它?这是正常的吗?

没有

我认为您所说的是您在一个进程中执行STUN,但希望使用这些绑定的实际应用程序在另一个进程中运行。只需让你的应用程序自己执行STUN绑定,然后只需重新使用套接字即可获得数据。如果您尝试通过同一个套接字复用STUN和应用程序数据,则需要(自己的)代码来区分每个。