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);
            }
        }
示例#3
0
        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);
 }
示例#5
0
 public void Connect(string host, int port, IAsyncInterface @interface)
 {
     Connect(host, port, @interface, null);
 }