public AsyncState(AsyncBase server, Socket socket, AsyncOperation operation, IAsyncInterface interface_, object user) { m_server = server; m_socket = socket; m_operation = operation; m_current_write_buffer = null; m_read_buffer = new byte[8192]; m_read_event_args = new SocketAsyncEventArgs(); m_read_event_args.Completed += OnIO; m_read_event_args.UserToken = this; m_read_event_args.SetBuffer(m_read_buffer, 0, m_read_buffer.Length); m_write_event_args = new SocketAsyncEventArgs(); m_write_event_args.Completed += OnIO; m_write_event_args.UserToken = this; m_write_buffers = new Queue <AsyncBuffer>(); Context = new AsyncContext(); Context.State = this; Context.User = user; Context.Interface = interface_; }
public void Accept(string host, int port, int outstanding, IAsyncInterface @interface, object user) { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress address = null; if (!IPAddress.TryParse(host, out address)) { IPHostEntry host_entry = Dns.GetHostEntry(host); address = host_entry.AddressList[0]; } socket.Bind(new IPEndPoint(address, port)); socket.Listen(outstanding); for (int x = 0; x < outstanding; ++x) { AsyncToken token = new AsyncToken(); token.Socket = socket; token.User = user; token.Interface = @interface; SocketAsyncEventArgs acceptEvtArgs = new SocketAsyncEventArgs(); acceptEvtArgs.UserToken = token; acceptEvtArgs.Completed += NetworkOnAccept; ProcessAccept(acceptEvtArgs); } }
public void Connect(string host, int port, IAsyncInterface @interface, object user) { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress address = null; if (!IPAddress.TryParse(host, out address)) { IPHostEntry host_entry = Dns.GetHostEntry(host); address = host_entry.AddressList[0]; } AsyncToken token = new AsyncToken(); token.Socket = socket; token.User = user; token.Interface = @interface; SocketAsyncEventArgs connectEvtArgs = new SocketAsyncEventArgs(); connectEvtArgs.UserToken = token; connectEvtArgs.Completed += NetworkOnConnect; connectEvtArgs.RemoteEndPoint = new IPEndPoint(address, port); ProcessConnect(connectEvtArgs); }
public void Accept(string host, int port, int outstanding, IAsyncInterface @interface) { Accept(host, port, outstanding, @interface, null); }
public void Connect(string host, int port, IAsyncInterface @interface) { Connect(host, port, @interface, null); }