Avatar
kxmx
Redaktor
Avatar
kxmx:

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. listopadu 13:56
Avatar
Elisse
Člen
Avatar
Elisse:

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. listopadu 14:01
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na kxmx
Martin Dráb:

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  +1 30. listopadu 14:04
2 + 2 = 5 for extremely large values of 2
Avatar
Elisse
Člen
Avatar
Odpovídá na Martin Dráb
Elisse:

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

 
Nahoru Odpovědět  +1 30. listopadu 14:15
Avatar
kxmx
Redaktor
Avatar
kxmx:

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. listopadu 14:41
Avatar
Luboš Běhounek (Satik):

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. listopadu 14:43
:)
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Elisse
Martin Dráb:

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. listopadu 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.