01. maj 2000 - 23:27Der er
5 kommentarer og 1 løsning
socket fra Java til C
Jeg har lavet et par sockets i henholdsvis C og Java. Når jeg prøver at transportere noget fra c til java går det fint, men når vi prøver den anden vej er det ikke altid vi får det hele med. Faktisk er det mere reglen end undtagelsen at der kun bliver overført en byte. Jeg tror det er noget med noget allokering af memory eller noget i den stil?
Den eneste måde du kan være sikker på, at det virker hver gang, er ved at blive ved med at kalde read() indtil du har modtaget alle de data, du skal bruge. sleep(1) lapper bare på en fundamentalt forkert løsning. Fejlen kan stadig opstå - det sker bare sjældnere.
Hvor kommer tallet på de 100 fra ??? Er det den "kontrol" struktur gennem hvilken der kommunikeres med Socket'en ??? Eller er det blot/kun dine egne data ???
Uanset hvad, kan jeg ikke forstå at jeg ikke skulle kunne få alt information fra socket'en i et hug, når blot jeg positivt ved hvor lang den er. Er problemet at det ved jeg ikke ?! I såfald ville jeg foreslå en struktur som anvendes i mange ClientAccess API'er, hvor datastrukturen altid starter med 2 byte indeholdende længden af det returnerede svar. På den måde ved jeg at jeg altid kan forvente 2 bytes, og hvis disse to bytes indeholde andet end 0, så ved jeg også hvor mange bytes jeg kan forvente efterfølgende.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.