.NET 4.x Передача изображения по сети. - C#
Формулировка задачи:
Здравствуйте. Возникла проблема с передачей изображения. Проблема в том, что если запустить приложение сервера и клиента на одном компе, то все работает, а если на разных(т.е. в разных сетях), то нет. Код сервера и клиента, вроде под интернет соединение, но на другой стороне видят пустую форму. Можете подсказать что в этом коде не так?
Server:
Клиент:
Обновление идет по таймеру 10мс. И правильно ли я делаю, что серверу нужен ип адрес компьютера, который принимает изображение. Мне бы хотелось, чтобы при подключении любого клиента на него передавалось изображение, т.е не зная ип клиента.
Листинг программы
- 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)
- {
- ///
- }
- }
Что никто не знает в чем проблема?
Решение задачи: «.NET 4.x Передача изображения по сети.»
textual
Листинг программы
- catch (Exception ex)
- {
- ///
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д