我正在研究一个服务器应用程序(C#,.NET 4.0),它需要每秒处理数千个UDP数据包.所以我决定SocketAsyncEventArg实现服务器.
我面临的问题是我的实现只收到一个数据包然后我得到"ConnectionReset"错误(我从未想过我会得到这个错误,因为UDP是无连接的).这是我的测试实现:
using System;
using System.Net;
using System.Net.Sockets;
static class Program
{
static void Main(string[] args)
{
UdpEchoServer.Start();
while (true)
{
Console.ReadLine();
SendPacket();
}
}
static void SendPacket()
{
Console.WriteLine("SendPacket");
var c = new UdpClient();
c.Send(new byte[5], 5, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 445));
c.Close();
}
}
static class UdpEchoServer
{
static Socket mSocket;
static byte[] mBuffer;
static SocketAsyncEventArgs mRxArgs, mTxArgs;
static IPEndPoint mAnyEndPoint, mLocalEndPoint;
public static void Start()
{
mAnyEndPoint = new IPEndPoint(IPAddress.Any, 0);
mLocalEndPoint = new IPEndPoint(IPAddress.Any, 445); …Run Code Online (Sandbox Code Playgroud)