예제 #1
0
        /// <summary>
        /// 创建一个客户端超级套接字
        /// <para>客户端会尝试连接3次,如果3次都失败则触发连接失败回调</para>
        /// </summary>
        /// <param name="ip">连接地址</param>
        /// <param name="port">连接端口</param>
        /// <param name="listener">监听器</param>
        /// <param name="config">配置</param>
        /// <returns></returns>
        public static HyperSocket CreateClient(string ip, uint port, IHyperSocketClient listener, HyperSocketConfig config = null)
        {
            try
            {
                if (config == null)
                {
                    config = new HyperSocketConfig();
                }
                var hyperSocket = new HyperSocket(false, ip, port, 0, 0, config);
                hyperSocket.cntListener = listener;
                // 开始发起连接
                hyperSocket.tcpClient = new HyperSocketClientModule(ip, (int)port, (int)config.TcpReceiveSize, ProtocolType.Tcp, hyperSocket);
                hyperSocket.tcpClient.SetListener(listener);
                hyperSocket.tcpClient.Init(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp, hyperSocket.tcpClient);
                // 发送验证标签
                hyperSocket.tcpClient.Send(FirstConnectBytes);

                return(hyperSocket);
            }
            catch (Exception ex)
            {
                listener.SocketError(null, ex);
                return(null);
            }
        }
 internal void CloseSocket()
 {
     Close();
     if (kcpHelper != null)
     {
         kcpHelper.CloseKcp();
     }
     hyperSocket = null;
     listener    = null;
 }
 internal void SetListener(IHyperSocketClient listener)
 {
     this.listener = listener;
 }