Соединение не удалось установить, потому что целевая машина активно отказалась от него-удаленный рабочий стол
Я играю с созданием удаленного рабочего стола.
Я использую TCP.
Я получаю сообщение об ошибке "соединение не может быть установлено, потому что целевая машина активно отказалась от него".
Есть идеи, как заставить это работать?
Клиент
private readonly TcpClient client = new TcpClient(); private NetworkStream mainStream; private int portNumber; private static Image GrabDesktop () { Rectangle bounds = Screen.PrimaryScreen.Bounds; Bitmap screenshot = new Bitmap(bounds.Width, bounds.Height, PixelFormat.Format32bppArgb); Graphics graphic = Graphics.FromImage(screenshot); graphic.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy); return screenshot; } private void SendDesktopImage() { BinaryFormatter binformatter = new BinaryFormatter(); mainStream = client.GetStream(); binformatter.Serialize(mainStream, GrabDesktop()); } public Form1() { InitializeComponent(); } private void btnConnect_Click(object sender, EventArgs e) { portNumber = int.Parse(txtPort.Text.Trim()); try { client.Connect(txtIP.Text, portNumber); MessageBox.Show("Connected"); } catch(Exception ex) { MessageBox.Show("Failed to Connect: " + ex.Message); } } private void btnShare_Click(object sender, EventArgs e) { if (btnShare.Text.StartsWith("Share")) { timer1.Start(); btnShare.Text = "Stop Sharing"; } else { timer1.Stop(); btnShare.Text = "Share my screen"; } } private void timer1_Tick(object sender, EventArgs e) { SendDesktopImage(); }
сервер выглядит следующим образом
private readonly TcpClient client = new TcpClient(); private NetworkStream mainStream; private int portNumber; private static Image GrabDesktop () { Rectangle bounds = Screen.PrimaryScreen.Bounds; Bitmap screenshot = new Bitmap(bounds.Width, bounds.Height, PixelFormat.Format32bppArgb); Graphics graphic = Graphics.FromImage(screenshot); graphic.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy); return screenshot; } private void SendDesktopImage() { BinaryFormatter binformatter = new BinaryFormatter(); mainStream = client.GetStream(); binformatter.Serialize(mainStream, GrabDesktop()); } public Form1() { InitializeComponent(); } private void btnConnect_Click(object sender, EventArgs e) { portNumber = int.Parse(txtPort.Text.Trim()); try { client.Connect(txtIP.Text, portNumber); MessageBox.Show("Connected"); } catch(Exception ex) { MessageBox.Show("Failed to Connect: " + ex.Message); } } private void btnShare_Click(object sender, EventArgs e) { if (btnShare.Text.StartsWith("Share")) { timer1.Start(); btnShare.Text = "Stop Sharing"; } else { timer1.Stop(); btnShare.Text = "Share my screen"; } } private void timer1_Tick(object sender, EventArgs e) { SendDesktopImage(); }
Что я уже пробовал:
Я попробовал запустить приведенный выше код
[no name]
Соединение не удалось установить, так как целевая машина активно отказалась от него 127.0.0.1:25[^]
[no name]
Сервера, клиенты подключаются.