.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) { /// }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д