.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)
{
///
}