Socket.SendFile - не получается заголовки добавить - C#

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

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

Есть сервер http, к нему подключается клиент, которому нужно дать изображение вместе с заголовками. Как это выглядит в сниффере -
HTTP/1.1 200 OK
Date: Wed, 02 Oct 2013 18:52:32 GMT
Content-Type: image/png
Connection: close
Last-Modified: Sat, 14 Sep 2013 16:27:26 GMT
Accept-Ranges: bytes
Content-Length: 2528

//----------------изображение
Как пытаюсь сделать я -
reply = "HTTP/1.1 200 OK\r\nDate: Wed, 02 Oct 2013 18:52:32 GMT\r\nContent-Type: image/png\r\nConnection: close\r\nLast-Modified: Sat, 14 Sep 2013 16:27:26 GMT\r\nAccept-Ranges: bytes\r\nContent-Length: 2528\r\n\r\n";
                        msg= Encoding.ASCII.GetBytes(reply);
                        hand.SendFile("image.png",msg,null,TransmitFileOptions.Disconnect);
Но ошибка, и изображение битое, и никаких заголовков нет Если просто без заголовков файл указать - то все ок, но заголовков нет. Пробовал уже разные варианты, и приводить к строке изображение, затем отсылать через Socket.Send(), но там проблемы с кодировкой Файл в ASCII кодировке, но после отсылки - он уже в какой то другой
byte[] s=File.ReadAllBytes("image.png");
reply = "HTTP/1.1 200 OK\r\nDate: Wed, 02 Oct 2013 18:52:32 GMT\r\nContent-Type: image/png\r\nConnection: close\r\nAccept-Ranges: bytes\r\nContent-Length: 2528\r\n\r\n";
byte[] msg= Encoding.UTF8.GetBytes(reply);
byte[] res=new byte[s.Length+msg.Length];
Array.Copy(msg,0,res,0,msg.Length);
Array.Copy(s,0,res,0,s.Length);
hand.Send(res);
// hand обьект класса Socket
Что тут уже не так? Изображение показывается, а заголовки фиг

Решение задачи: «Socket.SendFile - не получается заголовки добавить»

textual
Листинг программы
Array.Copy(s,0,res,msg.Length,s.Length);

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


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

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

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