Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, socket] odbieranie danych z serwera HTTP, problem z funkcja revc

Ostatnio zmodyfikowano 2013-12-17 18:30
Autor Wiadomość
tookie009
Temat założony przez niniejszego użytkownika
» 2013-12-16 22:15:20
coraz czesciej czytam dzial szukam pomocy, ale czesto jest tez tak, ze sam sie z tego ucze ;) moja wiedza o c++ nie jest zbyt duza jeszcze, ale kazdego tygodnia cos dochodzi nowego ;)
 
znalazlem cos takiego, czyli mozna ustawic na tcp, i jutro to uczynie. Teraz jest tylko pytanie, czy jezeli recv sie zawieszal, bo oczekiwalem na za duzo znakow, nie bede mial z tcp podobnego problemu? jak to obejsc?
P-99411
DejaVu
» 2013-12-16 22:51:05
Używasz obecnie TCP :P SOCK_STREAM to protokół TCP, a HTTP to tylko sposób przesyłania danych przy pomocy protokołu TCP.
P-99413
tookie009
Temat założony przez niniejszego użytkownika
» 2013-12-17 07:24:38
aaa no tak, TCP to 3 warstwa a HTTP to 4 ;)) czyli jak bede odbieral dane bez HTTP, czystym TCP to nie bede mial problemu z tym, zeby czekac na zapelnienie buffora (tak jak to mialem z HTTP (funkcja recv))? Kolejna sprawa, jezeli uzywam telnetu i lacze sie z tym IP i portem co nadaje przez TCP to co powinienem wpisac zeby dostac te wiadomosci (GET jest tylko dla HTTP?)? Beda one na biezaco wysylane, czy tylko 1 raz, i jezeli sei potem cos zmieni juz to nie bedzie wyslane?

EDIT. popelnilem podstawowy blad, zdaje mi sie. recv() jest funckja dla klienta, a ja powinienem budowac przeciez serwer ;) czyli powinenem nasluchiwac a nie odbierac. Dam o efektach znac ;)
P-99419
DejaVu
» 2013-12-17 12:34:54
Skoro chcesz odbierać dane od serwera HTTP to piszesz aplikację klienta. TCP to protokół odpowiedzialny za przesyłanie danych przez sieć. Protokół HTTP to tylko sposób 'kodowania' danych przesyłanych w sieci. TCP zajmuje się przesyłaniem danych. HTTP to tylko informacja 'jak należy interpretować otrzymywane dane' oraz 'jak mają wyglądać wysyłane dane'. Protokół HTTP korzysta z TCP do przesyłania danych. TCP jest protokołem ogólnego użytku i jego charakterystycznymi cechami są:
  • konieczność nawiązania połączenia klient/serwer
  • dane docierają zawsze w poprawnej kolejności (w takiej kolejności w jakiej wyślesz, w takiej kolejności dane odbierzesz)
  • dane nie są gubione (to co wyślesz zostanie na pewno odebrane - o ile sama funkcja wysyłająca nie zwróci Ci błędu, że nie dało się dostarczyć wiadomości)
  • dane nie ulegną zduplikowaniu (pakiet zgubiony zostanie powtórzony bez Twojej wiedzy oraz pakiet, który przyjdzie podwójnie, zostanie pominięty i nie wpłynie na sposób odczytywania danych)
  • dane są przesyłane strumieniowo, czyli dane w trakcie transmisji mogą być podzielone np. na kilka części, lub kilka pakietów może zostać sklejonych razem. Jeżeli wyślesz np. 100KB danych z serwera jednym wywołaniem send(...), to klient może odebrać te dane na raty, np. najpierw może dostać 10KB potem 55KB potem 1KB i potem resztę.
P-99423
tookie009
Temat założony przez niniejszego użytkownika
» 2013-12-17 18:30:25
osi przerabialem juz pare razy, takze takie podstawy sa mi znane. Moim problemem bylo faktycznie to, ze robilem clienta a potrzebowalem serwera. Dopiero niemieckojezyczne forum pomoglo mi ;) Coz kod jest typowym serwerm, takze nie ma co publikowac. Temat zamykam
P-99468
1 « 2 »
Poprzednia strona Strona 2 z 2