/// <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; } }
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); }