NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
kxmx
Tvůrce
Avatar
kxmx:30.11.2016 13:56

Ahoj chtěl bych se jen zeptat kde bude zakopaný pes, když mi socket server podává část dat vadnou, ale vždy stejně, je možné aby byla chyba v sítí či na straně klienta?

příklad

očekávám: /LGZ5\2ZMD4104409.B34\r\n
obdržím: \xaf \xcc GZ5\ \xb 2ZMD4 \xb10 \xb4 \xb4 09.B3 \xb2 \x8d \n

zde je vidět, že se několik znaků shoduje, Byty co zůstaly v hexa nemají ascii reprezentaci

 
Odpovědět
30.11.2016 13:56
Avatar
Erik Šťastný:30.11.2016 14:01

Použítí TCP by mělo vyloučit chybu v síti.

PS: napiš to rovnou vše jen v hexa :)

 
Nahoru Odpovědět
30.11.2016 14:01
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na kxmx
Martin Dráb:30.11.2016 14:04

Předpokládej chybu u sebe nebo na serveru. Nevím, zda se chybovost paketů kontroluje nějak lépe než skrz CRC (což nevylučuje možnost, že chybné pakety budou považovány za dobré, ale ta pravděpodobnost je velmi malá).

Nahoru Odpovědět
30.11.2016 14:04
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Martin Dráb
Erik Šťastný:30.11.2016 14:15

O to se prakticky stará TCP a jeho by to vůbec trápit nemělo, ne?

 
Nahoru Odpovědět
30.11.2016 14:15
Avatar
kxmx
Tvůrce
Avatar
kxmx:30.11.2016 14:41

chyba na straně serveru není vůbec vyloučena, spíš jsem se chtěl poradit jestli je možné aby bylo něco špatně u mě s takovýmhle minimalistickém klientem

python

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, port))
sock.send(b'nejaka data')
print(sock.recv(23))
sock.close()
 
Nahoru Odpovědět
30.11.2016 14:41
Avatar
Luboš Běhounek Satik:30.11.2016 14:43

Přesně tak, může se stát, že dojde k chybě, ale tohle je čistě softwarový problém.
Pošli kód, který ty data posílá a přijímá.

Nahoru Odpovědět
30.11.2016 14:43
https://www.facebook.com/peasantsandcastles/
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Erik Šťastný
Martin Dráb:30.11.2016 14:55

O to se prakticky stará TCP a jeho by to vůbec trápit nemělo, ne?

TCP se ti stará mj. o to, aby ti vytvořilo iluzi, že ti pakety došly ve stejném pořadí, v jakém je odesilatel poslal, že ti každý došel právě jednou.

Nevím ale, jak by mohly obě strany (klidně na jednom drátě, poř. na jedné bezdrátové síti. Na tom drátě by to možná ještě šlo) poznat, že přenos opravdu proběhl bez chyby. Protože nerozumí datům, která posíláš uvnitř paketu. Takže pokud sedí CRC, nemají se důvod domnívat, že je něco špatně. Samozřejmě, tohle se dá řešit i dalšími protokoly, která třeba část obsahu hašují, takže je větší záruka než u CRC (ale bere to více místa a výkonu).

Nahoru Odpovědět
30.11.2016 14:55
2 + 2 = 5 for extremely large values of 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.