udp服务端的效率
int iReceive;Socket udplocalSocket;
byte[] btData = new byte[1024];
IPEndPoint ipLocalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), port1);
udplocalSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
udplocalSocket.Bind(ipLocalEndPoint);
while (true)
{
btData = new byte[1024];
IPEndPoint ipRemoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
EndPoint remoteEndPoint = (EndPoint)(ipRemoteEndPoint);
try
{
iReceive =udplocalSocket.ReceiveFrom(btData, ref remoteEndPoint);
}
catch (SocketException ex)
{
continue;
}
if(btData.Length>0)
{
byte[] temp = DllFun.TrimByte00(btData);
udpclassobject m_udpclassobject = new udpclassobject();
m_udpclassobject.remoteEndPoint = remoteEndPoint;
m_udpclassobject.temp = temp;
ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback(UpdataHandler1.UpDataHandler), m_udpclassobject);
}
Thread.Sleep(1);
}
这种是不是效率很低,有2000多个客户端同时发送数据丢包特别严重,还不确定是网络还是代码问题,找时间抓包看看。
希望各位先帮忙看下代码。如果确实是这样效率不高的话,麻烦大家给个高效的办法或者代码,谢谢