Agarwal1984 Ответов: 1

Не удалось установить соединение, т. к. конечный компьютер отверг запрос на .Чистое Программирование сокетов приложения Windows


Привет,

No connection could be made because the target machine actively refused it in .net socket programming windows application


Я хочу перенести zip-файл на локальный сервер,но он получает ошибку.

Как решить эту проблему?
Пожалуйста, помогите мне.
заранее спасибо.

Анкит Агарвал
инженер-программист

Что я уже пробовал:

private void btnBrowse_Click_1(object sender, EventArgs e)
        {
            
            FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                TextBoxValue = folderBrowserDialog1.SelectedPath;

            int count = panel1.Controls.OfType<Label>().ToList().Count;
            TextBox textbox = new TextBox();
            count = panel1.Controls.OfType<TextBox>().ToList().Count;
            textbox.Location = new Point(3, 25 * count);
            textbox.Size = new Size(188, 20);
            textbox.Name = "textbox_" + (count + 1);
            textbox.Text = TextBoxValue;
            
            arrayList.Add(TextBoxValue);
            //textbox.TextChanged += new System.EventHandler(this.TextBox_Changed);
            panel1.Controls.Add(textbox);
        }

        private void btnBackup_Click(object sender, EventArgs e)
        {
            //int count = panel1.Controls.OfType<Label>().ToList().Count;
            try
            {
                string ipAddress = txtIP.Text;
                int port = int.Parse(txtPort.Text);
                for (int i = 0; i < arrayList.Count; i++)
                {
                    using (Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile())
                    {
                        zip.AddDirectory(arrayList[i].ToString());
                        //zip.Save(@"D:\abc" + "_" + (i + 1) + ".zip");
                        
                        //zip.Save(@"D:\abc" + "_" + (i + 1) + ".zip");
                        fileName = @"D:\abc" + "_" + (i + 1) + ".zip";
                        Task.Factory.StartNew(() => SendFile(ipAddress, port, fileName, shortFileName));
                        MessageBox.Show("Files zipped");
                    }
                }
            }
            catch (Ionic.Zip.ZipException ex)
            {
                MessageBox.Show(ex.Message);
            }
            if (checkBox1.Checked == true)
            {
                var psi = new ProcessStartInfo("shutdown", "/s /t 0");
                psi.CreateNoWindow = true;
                psi.UseShellExecute = false;
                Process.Start(psi);
                //ProcessStartInfo startinfo = new ProcessStartInfo("shutdown.exe", "-s");
                //Process.Start(startinfo);
            }
        }
        public void SendFile(string remoteHostIP, int remoteHostPort, string longFileName, string shortFileName)
        {
            try
            {
                if (!string.IsNullOrEmpty(remoteHostIP))
                {
                    byte[] fileNameByte = Encoding.ASCII.GetBytes(shortFileName);
                    byte[] fileData = File.ReadAllBytes(longFileName);
                    byte[] clientData = new byte[4 + fileNameByte.Length + fileData.Length];
                    byte[] fileNameLen = BitConverter.GetBytes(fileNameByte.Length);
                    fileNameLen.CopyTo(clientData, 0);
                    fileNameByte.CopyTo(clientData, 4);
                    fileData.CopyTo(clientData, 4 + fileNameByte.Length);
                    TcpClient clientSocket = new TcpClient(remoteHostIP,remoteHostPort); // Error in this line.
                    NetworkStream networkStream = clientSocket.GetStream();
                    networkStream.Write(clientData, 0, clientData.GetLength(0));
                    networkStream.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

ZurdoDev

Это потому, что ничто не прослушивает порт, в который вы пытаетесь отправить сообщение. Или у вас есть брандмауэр, блокирующий его, или что-то еще. Не знаю, чего вы от нас хотите.

Agarwal1984

мой антивирус отключен, а брандмауэр уже заблокирован.

[no name]

https://www.google.com/search?q=No+connection+could+be+made+because+the+target+machine+actively+refused+it+in+.net+socket+programming+windows+application&oq=No+connection+could+be+made+because+the+target+machine+actively+refused+it+in+.net+socket+programming+windows+application

1 Ответов

Рейтинг:
1

#realJSOP

Если это локальный сервер, просто используйте System.IO.File.Copy чтобы скопировать файл. В зависимости от машины, на которой выполняется код, вам понадобится полный путь DNC к другой системе/диску/папке машины. Конечно, это не сработает, если у вас нет правильных разрешений.

Другой вариант-использовать встроенные FTP-объекты .Net для передачи файла.