我以前使用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之间有什么区别?或者它有点相同?! –