我以前使用BeginAccept()
和BeginRead()
,但使用Visual Studio 2012我想在我的套接字服務器程序中使用新的異步(async
,await
)功能。使用.Net 4.5異步功能進行套接字編程
如何完成AcceptAsync
和ReceiveAsync
的功能?
using System.Net;
using System.Net.Sockets;
namespace OfficialServer.Core.Server
{
public abstract class CoreServer
{
private const int ListenLength = 500;
private const int ReceiveTimeOut = 30000;
private const int SendTimeOut = 30000;
private readonly Socket _socket;
protected CoreServer(int port, string ip = "0.0.0.0")
{
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_socket.Bind(new IPEndPoint(IPAddress.Parse(ip), port));
_socket.Listen(ListenLength);
_socket.ReceiveTimeout = ReceiveTimeOut;
_socket.SendTimeout = SendTimeOut;
_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontLinger, true);
}
public void Start()
{
}
}
}
非常感謝你幫助我們瞭解事情的進展。 –
沒問題。你似乎對最好的方法有點困惑,所以希望這會稍微澄清一些事情。 – spender
但是現在最後一個問題:D,在使用Old BeginReceive和新的ReceiveAsync之間有什麼區別?或者它有點相同?! –