示例#1
0
        /// <summary>
        /// 连接服务器异步回调
        /// </summary>
        /// <param name="message">发送的信息</param>
        public void ConnectCallBackF(IAsyncResult ar)
        {
            ConnectParam connectParam = (ConnectParam)ar.AsyncState;

            try
            {
                connectParam.tcpClient.EndConnect(ar);
                connectParam.IsConnect = true;

                connectParam.GetTcpClient();

                //连接成功,然后开启线程等待接收消息
                connectParam.ListenerMsgThread.Start(connectParam);

                //先建立SSL通道(利用公钥将对称key加密发给服务器)
                AsyncSendMessage(connectParam, RSAProcessor.RSAEncrypt(configModel.PublicKey, connectParam.RandomKey) + MessageTypes.KEY);

                //发送第一条用对称key加密的信息
                AsyncSendMessage(connectParam, RijndaelProcessor.EncryptString(connectParam.Msg, connectParam.RandomKey));
            }
            catch
            {
                App.Current.Dispatcher.Invoke(new Action(() =>
                {
                    StoryboardManager.StopStoryboard("Story_Login");
                    XWT.MessageBox.Show("未能连接到服务器,请检查网络状态!", "提示", MessageBoxButton.OK, MessageBoxImage.Error);
                }), System.Windows.Threading.DispatcherPriority.Normal);

                if (connectParam.tcpClient != null)
                {
                    connectParam.tcpClient = null;
                }
                connectParam.IsConnect = false;
            }
        }
示例#2
0
        public void OnReceiveMsg(string message)
        {
            if (connectParam.IsConnect == true)
            {
                //直接发送加密信息
                AsyncSendMessage(connectParam, RijndaelProcessor.EncryptString(message, connectParam.RandomKey));
            }
            else
            {
                //先建立连接及SSL通道,再发送
                ConnectToServer(message, configModel.LoginIP, int.Parse(configModel.LoginPort));
            }

            //MsgEvent msgEvent = eventAggregator.GetEvent<MsgEvent>();

            //if (subscriptionToken != null)
            //    msgEvent.Unsubscribe(subscriptionToken);
        }