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多个客户端同时发送数据丢包特别严重,还不确定是网络还是代码问题,找时间抓包看看。
希望各位先帮忙看下代码。如果确实是这样效率不高的话,麻烦大家给个高效的办法或者代码,谢谢
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多个客户端同时发送数据丢包特别严重,还不确定是网络还是代码问题,找时间抓包看看。
希望各位先帮忙看下代码。如果确实是这样效率不高的话,麻烦大家给个高效的办法或者代码,谢谢
...全文
相关推荐
高效率IOCP的UDP通信服务端
高效率IOCP的UDP通信服务端,基于IOCP的为管理容器的线程池,提供取出与加入以及线程池大小的操作
UDP socket自动连接服务端
多台android设备,其中有一台作为服务端,则另外一台或几台作为客户端,然后通过UDP进行Socket自动连接.
UDP 服务端和客服端测试程序
实现了一个客户端和服务端,客服端请求数据时服务端将马上做出应答
基于UDP协议的unity客户端,内涵服务端源码
基于UDP协议的客户端与服务端通信demo,unity客户端可以不断跟服务端发送信息,内涵服务端的源码
服务端基于MINA2的UDP双向通信Demo演示(MINA2服务端)
本源码是《NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示》一文的MINA2服务端源码实现,详见:http://www.52im.net/thread-373-1-1.html


