Onda za svaki winsock spajas njegove podatke u poseban string/niz bajtova pa delis. Tako neces imati onu izmesanu situaciju.
Klijent-Server aplikacija...
Zaključano
Zakačeno
Moraš da pamtiš šta ti je poslao svaki klijent posebno. Ne možeš da imaš globalnu primenljivu za sve klijente. Trebalo bi da napraviš nešto ovako
ukoliko neobradjeno sadrži "kraj poruke" onda obradiš podatke i na kraju za tog klijenta čuvaš šta god je primio posle "Kraj poruke" kako bi sledeći put kad primiš podatke od njega samo nastavio niz. Ukoliko nema "Kraj poruke" onda sve sačuvaš kao neobrađeno za tog klijenta
Code:
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim poruka As String
dim Neobradjeno as string
Winsock1(Index).GetData poruka
Neobradjeno = UzmiNeobradjenePodatkeZaKlijenta(index) 'pozoveš neku proceduru koja će na osnovu index-a da ti vrati neobrađene podatke iz neke kolekcije
neobradjeno = neobradjeno & poruka
if neobradjeno= ... Then ...
end if
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim poruka As String
dim Neobradjeno as string
Winsock1(Index).GetData poruka
Neobradjeno = UzmiNeobradjenePodatkeZaKlijenta(index) 'pozoveš neku proceduru koja će na osnovu index-a da ti vrati neobrađene podatke iz neke kolekcije
neobradjeno = neobradjeno & poruka
if neobradjeno= ... Then ...
end if
ukoliko neobradjeno sadrži "kraj poruke" onda obradiš podatke i na kraju za tog klijenta čuvaš šta god je primio posle "Kraj poruke" kako bi sledeći put kad primiš podatke od njega samo nastavio niz. Ukoliko nema "Kraj poruke" onda sve sačuvaš kao neobrađeno za tog klijenta
Potpis
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
Da je važnije biti ljubazan nego biti u pravu
Malo me sad zbunilo ovo o mogucim greskama prilikom konekcije sa vise klijenata istovremeno.
Zanima me samo da li Blue82 i vujkev pricaju o WinSock kontroli sa UDP ili TCP protokolom....
Zanima me samo da li Blue82 i vujkev pricaju o WinSock kontroli sa UDP ili TCP protokolom....
ja pričao o TCP/IP
kod UDP-a je još komplikovanije jer je jedan UDP paket je makismalne dužine 1024 bajta (ako se ne varam). Ukoliko pokušaš da pošalješ više od te dužine tvoja poruka će naravno biti podeljena u nekoliko paketa. Problem je što primalac ne mora uvek da dobije prvi, pa redom sve ostale pakete, već može da ih dobije totalno izmešano, a na tebi je da ih složiš kako treba. Dodatna "mana" je što pošiljalac nema pojima da li je neko primio tu poruku ili ne.
kod UDP-a je još komplikovanije jer je jedan UDP paket je makismalne dužine 1024 bajta (ako se ne varam). Ukoliko pokušaš da pošalješ više od te dužine tvoja poruka će naravno biti podeljena u nekoliko paketa. Problem je što primalac ne mora uvek da dobije prvi, pa redom sve ostale pakete, već može da ih dobije totalno izmešano, a na tebi je da ih složiš kako treba. Dodatna "mana" je što pošiljalac nema pojima da li je neko primio tu poruku ili ne.
Potpis
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
Da je važnije biti ljubazan nego biti u pravu