TCP Programmering Problem

D

Davis

Guest
Jeg bruger TCP socket for at sende data over Ethernet.Jeg får pakker fuget i modtaget port.Jeg har brug for at adskille dem i programmeringsgrænseflader.Antag at TCP bør ikke arbejde på denne måde.Alle indstillinger jeg savnede?Please help me.Tak.

 
TCP giver dig en strøm af bytes' forbindelse, nøjagtigt som du beskriver, du har fundet.Din ansøgning er til at kode dine data i den forbindelse, og (selvfølgelig) afkode den, når den kommer ud.

Den enkleste måde at gøre dette er sandsynligvis at "kode" til ascii (f.eks bruge sprintf) og brug \ n at adskille beskeder.Hver besked vil starte med en unik streng af tegn til at angive, hvilke data, der følger det handler om.Til at afkode det man ville få en linje fra stikket (afsluttes med \ n), og derefter bruge sscanf at få strengen til at identificere den besked, og afhængigt af besked afkode resten af data på strækningen.

Hvis du er nødt til at sende binære data (f.eks fordi encoding til ASCII ville være for langsom / overbelaste kommunikation link) principperne er stadig de samme, men du bliver nødt til at kode den rutinemæssige at regne ud, hvor hver meddelelse ender.

Når du sender data om en TCP-forbindelse, kan det være fragmenteret (så det ankommer til bestemmelsesstedet i flere forskellige bidder) eller kombineres med andre data (så det kommer i en større del end blev sendt), selv om strømmen af bytes er ikke beskadiget.Din ansøgning er at indsamle alle de data, bidder, der udgør en besked, og ikke unødigt afvise enhver ekstra data, der ankommer efter det (fordi det er probabl begyndelsen af det følgende besked).

Alt dette er temmeligt hvordan eventuelle stream kommunikation linket virker, ikke et problem enestående for TCP.

Hvis du er parat til at kode til påvisning mistet beskeder, eller du er parat til at stole på din kommunikation medium (dvs. ethernet) ikke at miste alle data, så kan du i stedet vælger at bruge UDP, som leverer data om en "besked"-princippet: Hvis du sat 273 bytes i en sokkel skrive, den modtagende ende vil få 273 bytes i en modtaget besked, så der er ingen af de strøm-dekodning spørgsmål.MEN UDP har ikke 'pålidelig levering' funktioner indbygget i det at TCP har, og din ansøgning vil have til at levere dem, hvis de er nødvendige.

HTH
Barny

 

Welcome to EDABoard.com

Sponsor

Back
Top