/// <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); }
internal static extern void socket_pool_queue (SocketAsyncCallback d, SocketAsyncResult r);