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

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

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

Здравствуйте. Возникла проблема с передачей изображения. Проблема в том, что если запустить приложение сервера и клиента на одном компе, то все работает, а если на разных(т.е. в разных сетях), то нет. Код сервера и клиента, вроде под интернет соединение, но на другой стороне видят пустую форму. Можете подсказать что в этом коде не так? Server:
Листинг программы
  1. public static void SendScreen(Image image, string ipAddr, int portAddr)
  2. {
  3. try
  4. {
  5. ms = new MemoryStream();// Store it in Binary Array as Stream
  6. ms2 = new MemoryStream();
  7. // Сохранили картинку в MemStream
  8. image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
  9. // Картинка в массиве
  10. byte[] arrImage = ms.GetBuffer();
  11. // Получили длину массива с картинкой
  12. int lenght = arrImage.Length;
  13. byte[] len = BitConverter.GetBytes(lenght);
  14. // Записали длину в поток
  15. ms2.Write(len, 0, 4);
  16. // Записали картинку в поток
  17. ms2.Write(arrImage, 0, arrImage.Length);
  18.  
  19. // Извлекли все из потока в массив передачи
  20. send = ms2.GetBuffer();
  21. // Передаем
  22. myclient = new TcpClient(ipAddr, portAddr);//Connecting with server
  23. myns = myclient.GetStream();
  24. mysw = new BinaryWriter(myns);
  25. mysw.Write(send);//send the stream to above address
  26. ms.Flush();
  27. ms2.Flush();
  28. mysw.Flush();
  29. myns.Flush();
  30. ms.Close();
  31. ms2.Close();
  32. mysw.Close();
  33. myns.Close();
  34. myclient.Close();
  35. }
  36. catch (Exception ex)
  37. {
  38. ///
  39. }
  40. }
Клиент:
Листинг программы
  1. public static void GetImage(string IpAddr, int portAddr)
  2. {
  3. try
  4. {
  5. // Open The Port
  6. IPAddress ip = IPAddress.Parse(IpAddr);
  7. mytcpl = new TcpListener(ip, portAddr);
  8. mytcpl.Start(); // Start Listening on That Port
  9. mytcpl.AcceptTcpClient();
  10. mysocket = mytcpl.AcceptSocket(); // Accept Any Request From Client and Start a Session
  11. ns = new NetworkStream(mysocket); // Receives The Binary Data From Port
  12. byte[] reciveLen = new byte[4];
  13. ns.Read(reciveLen, 0, 4);
  14. int lenght = BitConverter.ToInt32(reciveLen, 0);
  15. byte[] recive = new byte[lenght];
  16. Read(ns, recive, lenght);
  17. ms = new MemoryStream();
  18. ms.Write(recive, 0, lenght);
  19. img = Image.FromStream(ms);
  20.  
  21. //_Image.Image = Image.FromStream(ns);
  22. mytcpl.Stop(); // Close TCP Session
  23. }
  24. catch (Exception ex)
  25. {
  26. ///
  27. }
  28. }
Обновление идет по таймеру 10мс. И правильно ли я делаю, что серверу нужен ип адрес компьютера, который принимает изображение. Мне бы хотелось, чтобы при подключении любого клиента на него передавалось изображение, т.е не зная ип клиента.
Что никто не знает в чем проблема?

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

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

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


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

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

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы