.NET 4.x Передача изображения по сети. - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Возникла проблема с передачей изображения. Проблема в том, что если запустить приложение сервера и клиента на одном компе, то все работает, а если на разных(т.е. в разных сетях), то нет. Код сервера и клиента, вроде под интернет соединение, но на другой стороне видят пустую форму. Можете подсказать что в этом коде не так? Server:
 public static void SendScreen(Image image, string ipAddr, int portAddr)
        {
            try
            {
                ms = new MemoryStream();// Store it in Binary Array as Stream
                ms2 = new MemoryStream();
 
                // Сохранили картинку в MemStream
                image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                // Картинка в массиве
                byte[] arrImage = ms.GetBuffer();
                // Получили длину массива с картинкой
                int lenght = arrImage.Length;
 
                byte[] len = BitConverter.GetBytes(lenght);
                // Записали длину в поток
                ms2.Write(len, 0, 4);
                // Записали картинку в поток
                ms2.Write(arrImage, 0, arrImage.Length);

                // Извлекли все из потока в массив передачи
                send = ms2.GetBuffer();
 
                // Передаем
                myclient = new TcpClient(ipAddr, portAddr);//Connecting with server
                myns = myclient.GetStream();
                mysw = new BinaryWriter(myns);
                mysw.Write(send);//send the stream to above address
                ms.Flush();
                ms2.Flush();
                mysw.Flush();
                myns.Flush();
                ms.Close();
                ms2.Close();
                mysw.Close();
                myns.Close();
                myclient.Close();
 
            }
            catch (Exception ex)
            {
                ///
            }
        }
Клиент:
 public static void GetImage(string IpAddr, int portAddr)
        {
            try
            {
 
                // Open The Port
                IPAddress ip = IPAddress.Parse(IpAddr);
                mytcpl = new TcpListener(ip, portAddr);
 
                mytcpl.Start();                         // Start Listening on That Port
 
                mytcpl.AcceptTcpClient();
                mysocket = mytcpl.AcceptSocket();         // Accept Any Request From Client and Start a Session
                ns = new NetworkStream(mysocket);     // Receives The Binary Data From Port
                byte[] reciveLen = new byte[4];
                ns.Read(reciveLen, 0, 4);
                int lenght = BitConverter.ToInt32(reciveLen, 0);
                byte[] recive = new byte[lenght];
                Read(ns, recive, lenght); 
 
                ms = new MemoryStream();
                ms.Write(recive, 0, lenght);
                img = Image.FromStream(ms);

                //_Image.Image = Image.FromStream(ns);
                mytcpl.Stop();                             // Close TCP Session
            }
            catch (Exception ex)
            {
                ///
            } 
        }
Обновление идет по таймеру 10мс. И правильно ли я делаю, что серверу нужен ип адрес компьютера, который принимает изображение. Мне бы хотелось, чтобы при подключении любого клиента на него передавалось изображение, т.е не зная ип клиента.
Что никто не знает в чем проблема?

Решение задачи: «.NET 4.x Передача изображения по сети.»

textual
Листинг программы
catch (Exception ex)
            {
                ///
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы