最近做了个C#网络编程方面的机房管理小软件,分三个端,教师端,学生端,服务器端,教师端与服务器端采用Tcp协议,教师端与服务器端用的的UDP,现在测试时,用的多个机房,每个机房间一个路由!学生端要使用的话,先登陆,登陆时向服务器发送消息,服务器验证,返回登陆验证成功或失败消息!现在出现我个问题:学生端向服务器发送登陆的消息服务器能收到(学生登陆成功,先写进数据库,再返回给学生消息,从数据库看到登陆验证成功),可服务器返回给学生时的消息时出现混乱,学生端有时能收到,有时不能收到,也就是服务器学生端发送消息时出现问题!由于对网络方面知识的欠缺,想了好半天,没想出来原因,麻烦哪位大侠,知道原因,给我解释下!谢谢,也可以QQ交流814555571!谢谢!没多少分只有200,这就不送那么多了!
原文是:
教师端与服务器端采用Tcp协议,教师端与服务器端用的的UDP
这个到底用的是TCP还是UDP呢?
UDP是有可能出现丢包的现象,另外检查一下是否路由器的防火墙以及电脑的防火墙软件的策略,是否出入限制不一样?
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