Esempio n. 1
0
        //异步创建网络连接
        private static void MyConnectAsyncInternal(this EndPoint remoteEndPoint, MyConnectedCallback callback, object state)
        {
            if (remoteEndPoint is DnsEndPoint)
            {
                var dnsEndPoint = (DnsEndPoint)remoteEndPoint;

                var asyncResult = Dns.BeginGetHostAddresses(dnsEndPoint.Host, MyOnGetHostAddresses,
                                                            new DnsConnectState
                {
                    Port     = dnsEndPoint.Port,
                    Callback = callback,
                    State    = state
                });

                if (asyncResult.CompletedSynchronously)
                {
                    MyOnGetHostAddresses(asyncResult);
                }
            }
            else
            {
                var e      = MyCreateSocketAsyncArgs(remoteEndPoint, callback, state);
                var socket = new Socket(remoteEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                e.AcceptSocket = socket;
                socket.BeginConnect(remoteEndPoint, new AsyncCallback(MyConnectionCallback), e);
            }
        }
Esempio n. 2
0
        //创建自定义连接参数
        static MySocketAsyncArgs MyCreateSocketAsyncArgs(EndPoint remoteEndPoint, MyConnectedCallback callback, object state)
        {
            var e = new MySocketAsyncArgs();

            e.State          = state;
            e.Callback       = callback;
            e.RemoteEndPoint = remoteEndPoint;
            return(e);
        }
 public static void MyConnectAsync(this EndPoint remoteEndPoint, MyConnectedCallback callback, object state)
 {
     MyConnectAsyncInternal(remoteEndPoint, callback, state);
 }