none
c# udp向多内网客户端通信问题~~~~求帮助~ RRS feed

  • 问题

  • 本人新人菜鸟一枚~~ 所以希望能让大神们指点一二。。。。

    问题是这样的:

    有一个UDP服务端需要同多个内网的客户端通信(因为主要是视频,所以选择udp),而且从服务端向客户端发送的内容都是一样的。。。。。。

    思路是这样的,客户端先发一个小数据包给服务端,服务端获取了客户端的IP和端口后,然后直接向这个ip端口发送视频数据,为了保持连接,客户端每隔一段时间发一次数据包~~~~

    但是如果与多个用户通信的,如何才能使新的客户和老的客户同时保持发送?当老用户发来数据包的时候,如何区分是新用户还是老用户呢?我脑子有点略乱~~~~ 

    举个小栗子~

    服务端
    Byte[] receiveBytes = udpClient.Receive(ref  remoteIpEndPoint);

    每当有新的连接,remoteIpEndPoint 就会有新的值,怎样才能新建一个连接与之发送数据。当老用户发来数据包的时候,怎么区分这是老用户,无需新建一个连接???

    本人脑子有点笨笨哒~ 所以想不明白~ 还请大神们帮帮忙~~~ 谢谢啦~~
    2015年8月2日 14:35

答案

  • 你好,

    UDP不是TCP所以不是建立连接,用UDP的话发送的话可以使用广播的方式,而接受就是正常接收。

    对于怎么区分你的用户,你可以看你的方法的MSDN解释:


    在这里ref的remoteIpEndPoint可以让我们知道这个消息是从哪里发送过来的,你根据这个可以对发送方进行一个判断。

    我建议你理解一下UDP和TCP的区别,然后找找UDP的例子自己写一个小例子测试一下,你就可以大致理解它是怎么工作的。UDP的方式,强烈建议你先理解一下。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click to participate the survey.

    抱歉~ 可能我说的不太明白~ 是这样的,服务端是在外网,客户端在内网,所以似乎没法广播。。。。。

    所以我是想通过,客户端先向服务端发送一个数据,然后获取了IP跟端口后,就可以直接向获取的IP端口发送数据了。。。

    客户端以这样的方式开放的端口,不是暂时的么。。。。为了保持端口开放,所以按时向服务端发送一个数据。。。。

    现在我想通了,只要客户端第一次发送的数据跟后面的不一样,就可以解决这个问题了。。。。也就无需区分新老客户了。。。

    感谢您的回复~谢谢~~

    2015年8月5日 14:50

全部回复

  • 你好,

    UDP不是TCP所以不是建立连接,用UDP的话发送的话可以使用广播的方式,而接受就是正常接收。

    对于怎么区分你的用户,你可以看你的方法的MSDN解释:

    https://msdn.microsoft.com/en-us/library/cdas754k(v=vs.110).aspx

    在这里ref的remoteIpEndPoint可以让我们知道这个消息是从哪里发送过来的,你根据这个可以对发送方进行一个判断。

    我建议你理解一下UDP和TCP的区别,然后找找UDP的例子自己写一个小例子测试一下,你就可以大致理解它是怎么工作的。UDP的方式,强烈建议你先理解一下。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年8月4日 2:31
    版主
  • 你好,

    UDP不是TCP所以不是建立连接,用UDP的话发送的话可以使用广播的方式,而接受就是正常接收。

    对于怎么区分你的用户,你可以看你的方法的MSDN解释:


    在这里ref的remoteIpEndPoint可以让我们知道这个消息是从哪里发送过来的,你根据这个可以对发送方进行一个判断。

    我建议你理解一下UDP和TCP的区别,然后找找UDP的例子自己写一个小例子测试一下,你就可以大致理解它是怎么工作的。UDP的方式,强烈建议你先理解一下。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click to participate the survey.

    抱歉~ 可能我说的不太明白~ 是这样的,服务端是在外网,客户端在内网,所以似乎没法广播。。。。。

    所以我是想通过,客户端先向服务端发送一个数据,然后获取了IP跟端口后,就可以直接向获取的IP端口发送数据了。。。

    客户端以这样的方式开放的端口,不是暂时的么。。。。为了保持端口开放,所以按时向服务端发送一个数据。。。。

    现在我想通了,只要客户端第一次发送的数据跟后面的不一样,就可以解决这个问题了。。。。也就无需区分新老客户了。。。

    感谢您的回复~谢谢~~

    2015年8月5日 14:50