首页 新闻 会员 周边

C#网络编程,多级路由间,UDP发送消息客户端接收不正常?

0
悬赏园豆:200 [已关闭问题]

最近做了个C#网络编程方面的机房管理小软件,分三个端,教师端,学生端,服务器端,教师端与服务器端采用Tcp协议,教师端与服务器端用的的UDP,现在测试时,用的多个机房,每个机房间一个路由!学生端要使用的话,先登陆,登陆时向服务器发送消息,服务器验证,返回登陆验证成功或失败消息!现在出现我个问题:学生端向服务器发送登陆的消息服务器能收到(学生登陆成功,先写进数据库,再返回给学生消息,从数据库看到登陆验证成功),可服务器返回给学生时的消息时出现混乱,学生端有时能收到,有时不能收到,也就是服务器学生端发送消息时出现问题!由于对网络方面知识的欠缺,想了好半天,没想出来原因,麻烦哪位大侠,知道原因,给我解释下!谢谢,也可以QQ交流814555571!谢谢!没多少分只有200,这就不送那么多了!

问题补充: 不好意思,写错了,是学生端与服务器端采用的的UDP,教师端与服务器端采用的TCP!问题是UDP发送的消息,学生端收不到,服务器端能收到!! 没人回答???。。。。。
3EF的主页 3EF | 初学一级 | 园豆:0
提问于:2010-03-26 19:41
< >
分享
其他回答(1)
0

原文是:

教师端与服务器端采用Tcp协议,教师端与服务器端用的的UDP

这个到底用的是TCP还是UDP呢?

UDP是有可能出现丢包的现象,另外检查一下是否路由器的防火墙以及电脑的防火墙软件的策略,是否出入限制不一样?

查尔斯 | 园豆:3832 (老鸟四级) | 2010-03-26 23:17
:不好意思,写错了,是学生端与服务器端采用的的UDP,教师端与服务器端采用的TCP!问题是UDP发送的消息,学生端收不到,服务器端能收到!!
支持(0) 反对(0) 3EF | 园豆:0 (初学一级) | 2010-03-27 10:32
0

udp协议是不需要进行握手连接的,所以你可能需要循环读取试试:

  //侦听消息
UdpClient receivingUdpClient = new UdpClient(侦听端口);
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
while (true)         //循环扫描
{
       try
       {
     //获取接受到的信息,传的时候是以Byte[]来传的,所以接受时也要用Byte
            Byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);     
            string stripaddress = RemoteIpEndPoint.Address.ToString();      //发送方IP地址
            string strPort=RemoteIpEndPoint.Port.ToString();         //发送方端口
        }
}

http://msdn.microsoft.com/zh-cn/library/system.net.sockets.udpclient.aspx

Proxima | 园豆:120 (初学一级) | 2012-07-02 02:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册