예제 #1
0
        /// <summary>
        /// client 异步 connect, 连接成功后执行回调函数句柄
        /// </summary>
        /// <param name="asyncCallback"></param>
        public void AsyncConnect(SocketAsyncCallback asyncCallback, SocketAsyncExceptionCallback exceptionCallback, int SendTimeout, int ReceiveTimeout)
        {
            IPEndPoint ipe = new IPEndPoint(HostAddress.IP, HostAddress.Port);

            client                = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            client.SendTimeout    = SendTimeout;
            client.ReceiveTimeout = ReceiveTimeout;
            /// BeginConnect为异步代码, 无法捕捉异常, 所以只能写成这种方式
            client.BeginConnect(ipe, asyncResult => {
                try
                {
                    client.EndConnect(asyncResult);
                    asyncCallback();
                }
                catch (Exception ex)
                {
                    exceptionCallback(ex);
                }
            }, null);
        }
예제 #2
0
파일: Socket.cs 프로젝트: Therzok/mono
		internal static extern void socket_pool_queue (SocketAsyncCallback d, SocketAsyncResult r);