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