/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
WinSocket
Fra : Niels Borg


Dato : 14-01-03 22:25

Hej,

Jeg har skrevet en lille application som lytter på en bruger specificeret
port og sender data videre til en anden app via DCom. Et andet sted på LANet
senden en app Strings til ovennævnte application. Mit problem er at Stringen
ikke altid kommer hel igennem - Der bliver sendt eller modtaget ca. 1500
bytes. Jeg kan ikke afgøre om det er den sendende socket eller den
modtagende socket der ikke kan lide mine lange strings.

Er der en måde at sikre at en string kommer helt igennem? (Jeg har brug for
at kunne sende op til ca. 3000 bytes.)

Med venlig hilsen
Niels Borg



 
 
Tomas Christiansen (15-01-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 15-01-03 01:06

Niels Borg skrev:
> Jeg har skrevet en lille application som lytter på en bruger
specificeret
> port og sender data videre til en anden app via DCom.

Bruger du Winsock kontrollen til at "lytte" med?

Så bruger du garanteret UDP-protokollen, og der kan du ikke sende
flere bytes (i én pakke) end dit netværks MTU, som formentlig er lidt
over 1500 bytes.

Skal du have alt sikkert igennem, så brug TCP-protokollen.

-------
Tomas


Niels Borg (15-01-2003)
Kommentar
Fra : Niels Borg


Dato : 15-01-03 22:38

Hej igen,

Tak for svaret - Jeg bruger TCP-protokollen.
Er der et trick som gør at jeg får sendt og modtaget en hel tekst streng?
Lige nu lave jeg blot en
sock.sendData strText

sock.GetData strRec, vbString

Med venlig hilsen
Niels Borg

"Tomas Christiansen" <toc-nospam-01@blikroer.dk> wrote in message
news:b028kf$25lq$1@news.cybercity.dk...
> Niels Borg skrev:
> > Jeg har skrevet en lille application som lytter på en bruger
> specificeret
> > port og sender data videre til en anden app via DCom.
>
> Bruger du Winsock kontrollen til at "lytte" med?
>
> Så bruger du garanteret UDP-protokollen, og der kan du ikke sende
> flere bytes (i én pakke) end dit netværks MTU, som formentlig er lidt
> over 1500 bytes.
>
> Skal du have alt sikkert igennem, så brug TCP-protokollen.
>
> -------
> Tomas
>



Tomas Christiansen (15-01-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 15-01-03 23:40

Niels Borg skrev:
> Er der et trick som gør at jeg får sendt og modtaget en hel tekst
streng?
> sock.sendData strText
> sock.GetData strRec, vbString

Ja, du bliver nødt til at mellemlagre dine data "et andet sted" eller
du kan måske lade dem ligge i bufferen indtil du har modtaget _alle_
dine data (man kan ved hver dataarrival se på bytestotal eller
egenskaben .bytesreceived).

Jeg kan ikke umiddelbart selv genskabe problemet. Opstår det også hvis
både klient- og server-program kører på den samme computer (og de
"taler" sammen ved at forbinde sig til IP-adressen 127.0.0.1)?

-------
Tomas


Carsten Suurland (20-01-2003)
Kommentar
Fra : Carsten Suurland


Dato : 20-01-03 12:05

Hej Niels

Du kunne evt. komprimere din tekststreng inden du sender den.
Her kan du bruge Huffman algoritmen, som du kan finde her:
(Er samme algoritme der anvendes af f.eks WinZip)

http://www.planet-source-code.com/xq/ASP/txtCodeId.10293/lngWId.1/qx/vb/scri
pts/ShowCode.htm

/Carsten Suurland



Tomas Christiansen (21-01-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 21-01-03 10:39

Carsten Suurland skrev:
> Du kunne evt. komprimere din tekststreng inden du sender den.
> Her kan du bruge Huffman algoritmen, som du kan finde her:

Spørgsmålet er blot om det er "godt nok" at basere sig på at ens data-mængde "måske" er lille nok eller "måske" er komprimerbar nok
til at kunne være i en netværkspakke som "måske" er lidt over 1500 bytes og som "måske" ikke (af andre årsager) bliver delt op af
afsender-Winsock-kontrollen og måske ikke (af andre årsager) bliver delt op af modtager-Winsock-kontrollen.

Der er desværre mange ubekendte i dette regnskab, og det skal holdes op imod de "måske'er" man kan eliminere ved én gang for alle at
programmere en komponent, som kan opsamle og holde data indtil en vis konsistens er opnået (det kan man vist kalde en "intelligent
buffer").

-------
Tomas


Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408879
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste