Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как реализовать передачу данных и файлов по протоколу TCP?

88K
20 мая 2016 года
Emiliya_Emili
3 / / 20.05.2016
Задача следующая: передавать данные с сервера на клиент, с одного компьютера на другой, по протоколу TCP.

и еще при подключении клиента возникает ошибка "Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение"
при двойном нажатии на папку, она должна открываться, а файлы открываться, код для этого есть но будет ли работать по сети не уверена
Код:
string CorS;

        private TcpListener Server;
        private TcpClient remoteClient;
        private TcpClient localClient;
        private Thread thClient;
        private Thread thServer;

        private void btnServer_Click(object sender, EventArgs e)
        {
            Server = new TcpListener(IPAddress.Any, 6785);
            Server.Start();
            thServer = new Thread(() =>
            {
                remoteClient = Server.AcceptTcpClient();
                byte[] buffer = new byte[1024];
                while (remoteClient.Connected)
                {
                    Array.Clear(buffer, 0, buffer.Length);
                    remoteClient.GetStream().Read(buffer, 0, 1024);
                    string strData = Encoding.Default.GetString(buffer);
                }
            });
            thServer.Start();
            CorS = "s";
            ClientServer();
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            localClient = new TcpClient();
            localClient.Connect("127.0.0.1", 6785);
            thClient = new Thread(() =>
            {
                while (localClient.Connected)
                {
                    byte[] buffer = new byte[1024];
                    while (localClient.Connected)
                    {
                        Array.Clear(buffer, 0, buffer.Length);
                        localClient.GetStream().Read(buffer, 0, 1024);
                        string strData = Encoding.Default.GetString(buffer);                    
                    }
                }
            });
            thClient.Start();
            MessageBox.Show("45245234");
            CorS = "c";
            ClientServer();
        }


        #region //Клиент сервер
        public void ClientServer()
        {
            string infoToSend = GetLocDir();
            byte[] dataToSend = Encoding.Default.GetBytes(infoToSend);
            if (CorS == "c")
            {
                if (localClient != null && localClient.Connected)
                {
                    localClient.GetStream().Write(dataToSend, 0, dataToSend.Length);
                }
            }
            else if (CorS == "s")
            {
         
            }
        }
        #endregion


        #region //ВЫВОД ФАЙЛОВ
        public static string FPath;
        public static string backPath;
        List<string> ls = new List<string>();

        public static string GetLocDir()
        {
            String[] LogicalDrives = Environment.GetLogicalDrives();
            string dir = String.Join("/", LogicalDrives);
            return dir;
        }

        public static string GetDirectories()
        {          
            string[] dir = Directory.GetDirectories(FPath);
            string poddir = String.Join("/", dir);
            return poddir;
        }
       
        public static string GetFiles()
        {
            string[] files = Directory.GetFiles(FPath);
            string file = String.Join("/", files);
            return file;
        }
  • "Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение" Порт подключения открыт? от cronya, 22 мая 2016 года
88K
23 мая 2016 года
Emiliya_Emili
3 / / 20.05.2016
да с этим уже разобралась, но загрузка файла все еще не решена
88K
23 мая 2016 года
Emiliya_Emili
3 / / 20.05.2016
вот последний код
Код:
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private TcpListener Server;
        private TcpClient remoteClient; private TcpClient localClient;
        private Thread thClient; private Thread thServer;

        private void btnServer_Click(object sender, EventArgs e)//кнопка сервер
        {
            Server = new TcpListener(IPAddress.Any, 6785);
            Server.Start();
            thServer = new Thread(() =>
            {
                remoteClient = Server.AcceptTcpClient();
                SendData(GetLocDir());
                byte[] buffer = new byte[1024];
                while (remoteClient.Connected)
                {
                    Array.Clear(buffer, 0, buffer.Length);
                    remoteClient.GetStream().Read(buffer, 0, 1024);
                    string strData = Encoding.Default.GetString(buffer);
                    this.Invoke((Action)(() =>
                    {
                        string[] tx = strData.Split('\');
                        foreach (string s in tx)
                        {
                            listView1.Items.Add(s, 1);
                            ls.Add(s);
                        }
                    }));
                    // strData = "C:\1.txt"

                }
            });
            thServer.Start();

        }

        private void btnConnect_Click(object sender, EventArgs e)//кнопка клиент
        {
            localClient = new TcpClient();
            localClient.Connect("127.0.0.1", 6785);
            thClient = new Thread(() =>
            {
                byte[] buffer = new byte[1024];
                while (localClient.Connected)
                {
                    Array.Clear(buffer, 0, buffer.Length);
                    localClient.GetStream().Read(buffer, 0, 1024);
                    string strData = Encoding.Default.GetString(buffer);
                    this.Invoke((Action)(() =>
                    {
                        string[] tx = strData.Split('
/');
                        foreach (string s in tx)
                        {
                            listView1.Items.Add(s, 1);
                            ls.Add(s);
                        }
                    }));

                }
            });
            thClient.Start();
            SendData(GetLocDir());
        }

        #region //Клиент сервер
        public void SendData(string infoToSend)
        {
            byte[] dataToSend = Encoding.Default.GetBytes(infoToSend);
            if (localClient != null && localClient.Connected)
            {
                localClient.GetStream().Write(dataToSend, 0, dataToSend.Length);
            }
            else if (remoteClient != null && remoteClient.Connected)
            {
                remoteClient.GetStream().Write(dataToSend, 0, dataToSend.Length);
            }
        }

        public void btnDisplay_Click(object sender, EventArgs e)//начальная директория
        {
            SendData(GetLocDir());
        }

        private void listView1_ItemActivate(object sender, EventArgs e)//при нажатии на элемент, открытие файла или папки
        {
            //SendData("1|C:\");
            //SendData("2|C:\1.txt");

            if (listView1.SelectedItems.Count == 0)
                return;
            ListViewItem item = listView1.SelectedItems[0];
            SendData(item.Text);
            if (item.ImageIndex == 1)
            {
                string it = item.Text;
                string title = "";
                foreach (string s in ls)
                {
                    try
                    {
                        if (s.Substring(s.Length - it.Length, it.Length) == it)
                        {
                            FPath = s;
                            title = s;
                        }
                    }
                    catch { }
                }
                try
                {
                    string[] dirs = Directory.GetDirectories(FPath);
                    string poddir = String.Join("/", dirs);
                    this.Text = title;

                    GetFiles();
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }
            else if (item.ImageIndex == 0)
            {
                string start = this.Text + "\" + item.Text;
                System.Diagnostics.Process.Start(start);
            }
        }

        private void btnDownload_Click(object sender, EventArgs e)//загрузка файла
        {
            ListViewItem item = listView1.SelectedItems[0];
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                string path1 = folderBrowserDialog1.SelectedPath + "\" + item.Text;
                string path2 = FPath + "\" + Convert.ToString(item.Text);
                try
                {
                    ////////


                }
                catch (Exception fe)
                {
                    MessageBox.Show(fe.Message);
                    throw;
                }
            }
        }
        #endregion

        #region //ВЫВОД ФАЙЛОВ
        public static string FPath;
        public static string backPath;
        List<string> ls = new List<string>();

        public static string GetLocDir()
        {
            String[] LogicalDrives = Environment.GetLogicalDrives();
            string dir = String.Join("/", LogicalDrives);
            return dir;
        }

        public static string GetDirectories()
        {
            string[] dir = Directory.GetDirectories(FPath);
            string poddir = String.Join("/", dir);
            return poddir;
        }

        public static string GetFiles()
        {
            string[] files = Directory.GetFiles(FPath);
            string file = String.Join("/", files);
            return file;
        }

        #endregion
97K
08 июня 2016 года
Марина Шайдур
1 / / 08.06.2016
У нас подобные проблемы решаются быстро специалистами IT-отдела. Кстати, когда не было еще штатного сотрудника, то обращались сюда http://lwcom.ru/services/tekhnicheskaya-podderzhka/ Круглосуточно отвечают на звонки и решают большинство проблем удаленно. В крайнем случае приедет их программист и поможет вам.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог