/// <summary> /// 获取目标连接目标地址及端口号 /// </summary> /// <returns></returns> private AddressPort GetTargetAddressPort() { var addressPort = new AddressPort { Address = GetTargetIpAddress(), Port = GetTargetPort() }; return(addressPort); }
/// <summary> /// 获取本地连接目标地址及端口号 /// </summary> /// <returns></returns> private AddressPort GetLocalAddressPort() { var addressPort = new AddressPort { Address = GetLocalIpAddress(), Port = GetLocalPort() }; return(addressPort); }
/// <summary> /// 开启侦听服务 /// </summary> private void StartServer() { var addressPort = new AddressPort(); try { Dispatcher.Invoke(() => { BtnStartListening.IsEnabled = false; BtnStartListening.Content = "正在开始侦听"; addressPort = GetLocalAddressPort(); }); } catch (Exception) { Dispatcher.Invoke(() => { BtnStartListening.IsEnabled = true; MessageBox.Show("错误的IP地址或端口号!"); }); return; } var result = _misakaConnection.Connect(addressPort.Address, addressPort.Port); if (result) { Dispatcher.Invoke(() => { BtnStartListening.Content = "停止侦听"; OnConnectionModefied(_misakaConnection); AddReportData(ReportMessageType.Info, "服务器侦听启动"); }); } else { Dispatcher.Invoke(() => { BtnStartListening.Content = "开始侦听"; AddReportData(ReportMessageType.Info, "服务器侦听失败"); }); } Dispatcher.Invoke(() => { ChangeServerControlStatus(false); BtnStartListening.IsEnabled = true; }); }
/// <summary> /// 客户端发起连接 /// </summary> private void ClientConnect() { var addressPort = new AddressPort(); try { Dispatcher.Invoke(() => { addressPort = Dispatcher.Invoke(GetTargetAddressPort); BtnConnect.IsEnabled = false; BtnConnect.Content = "正在连接服务器"; }); } catch (Exception) { Dispatcher.Invoke(() => MessageBox.Show("错误的IP地址或端口号!")); return; } var result = _misakaConnection.Connect(addressPort.Address, addressPort.Port); if (result) { Dispatcher.Invoke(() => { _misakaConnection.TargetConnectionName = $"{addressPort.Address}:{addressPort.Port}"; BtnConnect.Content = "断开连接"; OnConnectionModefied(_misakaConnection); ReportService.Info("连接服务器成功!"); }); } else { Dispatcher.Invoke(() => { ReportService.Error("尝试连接失败!"); BtnConnect.IsEnabled = true; BtnConnect.Content = "连接服务器"; }); return; } Dispatcher.Invoke(() => { ChangeClientControlStatus(false); BtnConnect.IsEnabled = true; }); }