←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] jak wykorzystac sockety w pra...

Zablokowany

  • +
  • -
NoLiFeR - zdjęcie NoLiFeR 06.02.2015

Witam, mam pyt dot socketów, tzn jak zastosować je w praktyce.


 

new error, socket
socket = socket_open("amxx.pl", 80, SOCKET_TCP, error)// To wiem jak zrobić, otwieranie połączenia socket

new sData[256]
format(sData, 255,"GET /index.php HTTP/1.0^r^n")// Dlaczego tutaj jak i zarówno w linijce podspodem występują kombinacje znakowe "^r^n" ? ^n to nowa linia, a ^r to tabulacja (odstęp), lecz dlaczego się one tutaj znajdują ?
format(sData, 255, "%sHost: amxx.pl^r^n^r^n", sData)
socket_send(socket, sData, strlen(sData))

new sBuffer[512]
socket_recv(socket, sBuffer, 511)
socket_close(socket)


//Wzięte z dokumentacji.
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 07.02.2015

^r to nie tabulacja, to również jest nowa linia.

Trochę teorii... Jako, że świat nie kręci się wyłącznie wokół Windowsa (kiedyś DOSa), a na dodatek w zamierzchłych czasach rozwiązania microsoftu ustępowały Unixom, jest dość spora rozbieżność przy znakach końca linii. Otóż systemy Unixowe używają znaku ^n, jabłużka (OS X) używają ^r a windowsy i dosopodobne obu tych znaków w kolejności ^r^n. No i standard windowsowy nie dość, że daje największą kompatybilność (zrozumie go każdy system, bo zarówno Unix jak i OS X zignorują dodatkowy znak) to został przyjęty jako "niemy" standard w stronach WWW, bo kiedyś najpopularniejsza przeglądarka, Internet Explorer, rozumiała tylko tą sekwencję znaków końca linii.

Po drugie: to, co odbiera Twoja przeglądarka i co możesz podglądnąć przez kliknięcie gdzieś prawym przyciskiem na stronie i wybranie "pokaż źródło" zostało pozbawione przez przeglądarkę kilku linii, które są ważne właściwie tylko dla niej. Nagłówków mianowicie. Nagłówki te muszą posiadać konkretny format i niosą ze sobą takie informacje, jak ciasteczka, dane przesłane przez formularz, typ zawartości, kodowanie znaków i wiele innych. Nagłówki zaczynają się zawsze od linii określającej metodę żądania, adres i protokół, w następnych liniach zawierają się odpowiednio sformatowane dane.

Jakby tego było mało, przeglądarka gdy chce uzyskać jakąś stronę internetową, również wysyła nagłówki w takiej samej formie do serwera, tyle że tym razem zamiast treści strony albo nie ma nic, albo są jakieś dodatkowe dane, np przesyłane formularzem pliki.

Przypomnij sobie teraz, że ani format, ani formatex nie dodają na końcu stringa nowej linii, więc musisz ją dodać "ręcznie" poprzez właśnie ^r^n na końcu pierwszej i każdej następnej linii.

Jednak to nie wszystko... Nagłówki od treści żądania lub odpowiedzi zawsze musi oddzielać jedna pusta linia, dlatego ostatnia linia nagłówków posiada 2x ^r^n. Ta pusta linia musi się znaleźć tam nawet, gdy żądanie jest puste.
Odpowiedz

  • +
  • -
NoLiFeR - zdjęcie NoLiFeR 14.02.2015

Dzięki, do zamknięcia.

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 14.02.2015

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany