Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C# - odpowiedź dla klienta


Gość Pan Szymek

Rekomendowane odpowiedzi

Gość Pan Szymek
Opublikowano

Chcę odpowiedzieć na żądanie klienta, które wygląda, mniej, więcej tak:

GET plik.swf ..
inne duperele

 

No więc odsyłam

HTTP/1.1 200 OK
Date: data
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Content-Length: dlugosc

byte[]

za pomocą socketu, a więc

s.Send(UTF8Encoding.UTF8.GetBytes("odpowiedź wyżej") + File.ReadAllBytes("plik.swf"));

 

No i niestety klient pliku nie odbiera.

Weteran
Opublikowano

W content-length na pewno jest prawidłowa wartość?

Trudno mi tu coś powiedzieć, ponieważ nie podałeś całego kodu.

 

Powinno wyglądać to jakoś tak:

byte[] BuildHeader(string path)
 {
	 var header = ASCIIEncoding.ASCII.GetBytes(
		 new StringBuilder().AppendFormat("HTTP/1.1 200 OK\r\nContent-Length: {0}\r\n\r\n", File.ReadAllBytes(path).Length).ToString());
	 using (var str = new FileStream(path,FileMode.Open))
	 {
		 using (var br = new BinaryReader(str))
		 {
			 var buffer = br.ReadBytes((int)str.Length);
			 var outBuff = new byte[buffer.Length + header.ToString().Length];
			 header.CopyTo(outBuff, 0);
			 buffer.CopyTo(outBuff, header.Length);
			 return outBuff;
		 }
	 }
 }
//...
s.Send(BuildHeader("plik"));

Może i trochę przekombinowałem, ale powinno działać.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...