Tegye függővé a gethostbyaddr-t az ICQ futtatásakor
Tegye függővé a gethostbyaddr-t az ICQ futtatásakor, mit tegyen?
Jó napot.
Egy ilyen probléma:
Amikor az ICQ elindul, a gethostbyaddr lefagy a progámban.
Mit lehet csatlakoztatni? Például az ICQ megváltoztathatja a timeout paramétereket vagy valami mást.
És hogyan kell mindent dolgozni?
Ki "elhanyagolt ICQ". Az arcon?
> Ki "elhanyagolt ICQ". Az arcon?
Hmm. Mondja ki a "Mirabilis fejlesztő cég változatának ICQ-kliense" kifejezést - ez. nehéz látni.
> Lehetőség van az időtúllépések paramétereinek megváltoztatására vagy
> mi mást?
Nem hiszem.
Szüksége van rá, kérdezi?
Azt hiszem, a probléma valami más
Hmm. Mondja ki a "Mirabilis fejlesztő cég változatának ICQ-kliense" kifejezést - ez. nehéz látni.
Szerintem a probléma valami más
Mik az ötletek? A függőség tiszta és stabil.
Szüksége van rá, kérdezi?
Például a munkája során az ICQ nagy késleltetési választ ad a hálózattól, így meghatározza a szükséges időtartamot. Nem állítok be időtúllépést, ezért az ICQ használata során használom a beállításait, és talán a gethostbyaddr nem tönkreteszi, csak egy nagyon nagy időtúllépésre vár.
Hol van az eredeti kérdésben?
Sehol.
> Ha az ICQ fut
Igen, phih tudja, hogy mit értesz egyszerre az "asasked" kifejezés alatt.
> ICQ futtatásakor a beállításokat használom
Ez az IS # xA0, hol?)
Ha a beállítások az ICQ-t globálissá teszik, akkor a programom automatikusan használja azokat.
Opensource projektek. Elmondtam magának a cselekvés elveit. Tehát nem sikerült? Gyerünk - csinálj egy demó példát, hogy stabilan lógsz, és dobd ide. Meg fogjuk érteni.
> Mutasson le egy demo példát, amely stabilan lóg
Ez ritkán lóg, de a futó ICQ a 300 számítógép egyikén lóg.
Ha nincs kikapcsolva, minden rendesen megtörténik.
És van valami más függőség. mert néha még akkor is, ha az ICQ nem lóg :(
Ha sikerül lokalizálnom a hibát, elküldem a kódot.
Röviden, ez a kód lóg
Mi az InvertIP (ADDR)?
> Mi az InvertIP (ADDR);
A függvény, amely átrendezi a byte sorrendjét
Találtam egy másik funkciót.
Ha elhagyod magad # xA0; gethostbyaddr majd minden ekek jól. Ha hozzáadja a kódot, és csatlakoztatja a vállalatot
WNetAddConnection2
WNetCancelConnection2
Ez kezd lógni: (
# xA0, a temp do
# xA0; # xA0; kezdődik
# xA0; # xA0; # xA0; dwType: = RESOURCETYPE_DISK;
# xA0; # xA0; # xA0; lpLocalName: = null;
# xA0; # xA0; # xA0; lpRemoteName: = PChar ("" + s);
# xA0; # xA0; # xA0; lpProvider: = "";
# xA0; # xA0; vége;
# xA0; j: = WNetAddConnection2 (temp, nulla, nulla, 0); # xA0; // Csatlakoztassa a számítógépet
Ie kiderül, hogy ezek a funkciók hívása, mivel ez utóbbit érinti a gethostbyaddr
Itt a legvalószínűbb, hogy Ön is lóg a nem deklarált lpProvider számára.
A szolgáltató azonosító kódja:
függvény TMainForm.GetProvider (const CompName: String): String;
var
# xA0; puffer: Char csoport [0..255];
# xA0; Méret: DWORD;
kezdődik
# xA0; Méret: = SizeOf (puffer);
# xA0, ha a WNetGetProviderName (WNNC_NET_LANMAN, @Buffer, Size) <> Akkor NO_ERROR
# xA0; # xA0; Eredmény: = "hiányzik"
# xA0; egyébként
# xA0; # xA0; Eredmény: = String (puffer);
végén;
A szolgáltató nevének meghatározása nem segít.
megfigyelés:
Az ICQ és az ICQ nélküli hangár gyakorisága háromszor egymástól háromszor különbözik. Az ICQ nélkül 1500-as számítógéphez csatlakoztatva. ICQ-val 500-at.
Sergey M.
És miért volt az ICQ verziójának ismerete? Van-e glitches az ICQ más verzióival?
> Miért ismert az ICQ verziójáról?
Hol kérdeztem a "verziótól".
Megkérdeztem # xA0, a hálózat specifikus kliense). A mai napig számos Mirabilis ICQ ügyfél, Miranda, Trillian, RAT van RQ stb. és hasonlók.
Tehát van némi hiba ezekkel az ügyfelekkel?
Nem láttam őket
> Ezt még nem láttam
Akkor mi a különbség az ügyfél számára? ;)
> Mi a különbség az, hogy mely ügyfelet?
Nos, soha nem tudhatod, hogy mást (kivéve a jól ismerteket) használsz.
Helyezze be az egyes szálak végén. Alvás (1000); jelentősen javította a helyzetet, de végül a probléma nem lépett fel.
> Helyezze be az egyes szálak végén
Mi a "patak vége"?
Mutassa be a kódot.
Start Flow
fütyülés
kivonat MAC
ha a Mac
# xA0, teljes
# xA0; # xA0; kezdődik
# xA0; # xA0; # xA0; gethostbyaddr;
# xA0; # xA0; # xA0; WNetAddConnection2;
# xA0; # xA0; # xA0; WNetCancelConnection2;
# xA0; # xA0; vége;
Alvás (1000);
a patak vége
És hogyan kapcsolódik ez a kód az "ICQ beállításokhoz"?
Ezenkívül azt állítja, hogy a szál lefagy aludni "a.
> És hogyan kapcsolódik ez a kód az "ICQ beállításokhoz"?
> Továbbá azt állítja, hogy a szál lefagy "a.
Ha hozzáadja a WNetAddConnection2-et; # xA0; WNetCancelConnection2; elkezd Hangot kapni GetHostByAddr; akkor logikus feltételezni, hogy a következő szál lóg, és nem az aktuális. Lehetséges, hogy fogalmam sincs róla. Talán ezek a műveletek némi időt igényelnek. És ha nem adsz nekik ez alkalommal, akkor GetHostByAddr; lefagyhat.
De a tény továbbra is fennáll. A szemfehérje jelentősen csökkent.
Úgy gondolom, hogy az Aska a "beállításokkal" semmi köze ehhez - ez Mazdae-ban (Mazda = win9x / Me) történik, és a Wnet-funkciók mzdajnaya implementációja mindig is híres volt a "glukavostyu" -ról.
Azt hiszem, hogy az Aska a "beállításaival" semmi köze sincs
A tapasztalat beszél egy másiknak. És ami pontosan befolyásolja, nehéz meghatározni. Vagy a görbe végrehajtása valami ICQ megakadályozza a többi program a hálózaton. Vagy a Windows, amely nem húzza az ilyen terhelést. Bár a szálak számát próbáltam játszani. Az eredmény ugyanaz.
És mit jelent a "lefagyás"?
A hívás GetHostByAddr funkciója egyáltalán nem adja vissza az irányítást, vagy indokolatlanul hosszú?
Elhagyhatom a blokkoló fázist az aszinkron verzió (WSAAsyncGetHostByAddr) javára?
> A GetHostByAddr nevű hívás egyáltalán nem adja vissza az irányítást, vagy indokolatlanul hosszú?
Nem tudom biztosan. De egy órán belül nem adott vissza ellenőrzést :(
> Meg kell-e tagadni az f-tsii blokkolását az aszinkron verzió (WSAAsyncGetHostByAddr) javára?
Ez jelentősen megváltoztatja az alkalmazás logikáját. És maga a függvény WNetAddConnection2 nélkül; # xA0; WNetCancelConnection2; jól működik.
A hibakereső, mi?
> Ez jelentősen megváltoztatja az alkalmazás logikáját
Nos, legalábbis a kísérlet kedvéért.
> A hibakereső, mi?
És hogyan kell elolvasni a többszálas alkalmazásokban lévő funkciók függő hibakeresőt, ha valószínűsége 1/500 hangup?
És mi a titok az erőforrás összekapcsolásához és azonnal kikapcsolni?
A lényeg az, hogy hol találja meg a lábakat a hibával. És tényleg, miután összekapcsolta a vállalatot, még mindig beolvassa azt. De időbe telik és még nem volt hibás. Ezért ki van kapcsolva