Azt nem lehet adatokat átvinni a idudpclient
Azt nem lehet adatokat átvinni a idUDPClient / idUDPServer
Üdvözlünk! Írok a chat a helyi hálózaton. Használom Indy-yskie UDP-kliens és szerver UDP. Amikor elküld egy üzenetet, hogy a következő probléma: ha adatokat küldeni idUdpClient.Send (ADATA: string), akkor is sikerül ezt a sort a szerver idUDPServer.onUDPRead esemény, azaz a sorok szállítási problémák merülnek fel.
De ha azt tegye az adatokat (például típus byte) módszer idUdpClient.SendBuffer (var ABuffer, const ABytesCount: integer) vételekor egy adat szerver (OnUDPRead esemény) kapok „érvénytelen” adatfolyam AData: Áramlat.
Itt van a kód a „rossz” esetekben:
// Adatok küldése
eljárás TMainFrm.Button1Click (Sender: TObject);
var buf: TMemoryStream;
# XA0; # XA0; s: string;
kezdődik
buf: = Tmemorystream.Create;
F: = 6;
Buf.WriteBuffer (F, 1);
Buf.Position: = 0;
IdUdpClient1.SendBuffer (BUF, Buf.size);
s: = IdUdpClient1.ReceiveString;
Ha s = "" majd ShowMessage ( "Nincs válasz")
mást ShowMessage (s);
# XA0; Ha Z = 6, akkor ShowMessage ( "Ok12");
# XA0; s: = "kaptam";
# XA0; A Abinding do
# XA0; SendTo (PeerIP, PeerPort, s [1], hossza (s));
# XA0; Buf.Free;
Tud valaki magyarázni nekem, mi a probléma?
Természetesen lehetőség van, és összhangban rögzíteni bármilyen típusú adat, de először meg kell alakítani az adatokat egy húr küldésekor, küldési módot Send (kapott string), és elő a ellenkező irányú konverzió (string az adatok típusát) a recepción. Számomra ez a megközelítés valahogy nem tetszik :).
De valamilyen oknál fogva nem működik SendBuffer módszer? A kezem görbe vagy egy hiba INDY?
Most ez nem szükséges Indy, de megpróbálom. Ha Indyah a SendBuffer is használt típustalan puffer, meg kell:
IdUdpClient1.SendBuffer (Buf.Memory, Buf.size);
Majd adott esetben telepíteni 0 állás
> IdUdpClient1.SendBuffer (BUF, Buf.size);
Ehehe. És úgy gondolja, hogy az Ön által küldött ilyen módon?
> Van egy kanyarodás, vagy ez egy hiba INDY?
Ez nem hiba Indy, de a kezét. Ahelyett, görbék, és tapasztalatlan. ;-)
Tehát mi Nike így küldi?
> Mi Nike így küldi?
> PChar (@F) ^
Hogy miért. Akkor csak számok és módon, a szerkezet, és egy statikus tömb továbbítja mind típustalan változó. A dinamikus tömbök nehezebb.
> Nike # XA0; (16.10.05 09:03)
Az összes, hogy azt mondta, már vannak úgy, hogy a méret a továbbított adatok nem haladhatja meg a maximális méretet adatcsomagok, vagy nem tud látni a jó szerencsét.
Sorki hiba, gyors kéz szaggatott (=
Memória: 0,75 MB
Idő: 0,046 c