Delphi XE Indy IdTcpServer és Client -nél miért olyan halál lassú egy néhány kb-os Stream átküldése ha LAN-on kívülre megyek?
LAN-on belül néhány sec alatt átmegy egy 28Mb-os fájl, kívülről(Router port átirányítás...) egy 75k fájlnak 8 sec re van szüksége. Ugyanezen fájl másolását a Teamviever 2 sec alatt megoldja.
Az Indy komponenssel van a baj?
Client:
Client.IOHandler.Write(MyStream,0,true);
Server:
cnt := AContext.Connection.IOHandler.ReadLongInt(); AContext.Connection.IOHandler.ReadStream(MsgItem.MsgFile,cnt,false);
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Mert az Indy komponensek úgy szaharok, ahogy vannak.
Mindenki saját hálózati rutinokat ír, ha jót akar magának.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"Mindenki saját hálózati rutinokat ír, ha jót akar magának."
Senki nem ír saját hálozatkezelést, ha jót akar magának.
Felhasznál valami könyvtárat, amit profik írtak.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"Tudom szobaprogramozóként ezt nehéz elképzelni, de az ipar így működik."
Hahaha ^64.
Nem igazán tudom a fent említett link alatt lévő információt beilleszteni a projectbe. Néhány szóban a projectről, hogy tisztább legyen a kép :
Több modulból álló rendszer modulok közti kapcsolatát próbálom megvalósítani. A modulok egyes részeit c++-ban írják, néhány részét pedig delphiben. A rendszer maga dll-be van beágyazva. A modulok számára akommunikáció "fekete doboz" only dll függvényeket hívnak(sendMsg, SendFile...stb). A bejövő üzenet Alertet Event segítségével valósítottam meg. A dll-ben vannnak szerverek, kliensek szálak, minden ami az üzenetközvetítéséhez szükséges. És remekül működik , CSAK 1 probléma van vele hogy ha kimegyek LAN on kívülre az üzenetek hamar célba érnek, viszont a file küldés nagyon lassú. próbáltam régebben TTcpClient/TTcpServer-el, TServerSocket/TClientSocket-tel- úgy hogy átvettem egy saját, a szerver által használt szálból származtatott, általam kibővített, Szálobjektum- al megoldani az a része eléggé régimódi és az eventekkel is baj volt. Most a Az Indy eddig jól szuperált. EDDIG. Az eventek remekül működnek, elég az execute-ot megadni neki, és minden modul külön szál kontextusban csinálja a saját execut-ját. Csak ez a netes probléma ne lenne vele. Valahogyan ennek a megoldására törekednék. Nem akarom kidobni amit eddig hetek alatt készítettem.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!