ReportError(_T("ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² DLL"), 0, FALSE);
}
}
if (dl_addr == NULL) { /* ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²Π½ΡΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ. */
/* Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. */
/* β¦ Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ Π² serverNP β¦ */
}
/* β¦ Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ Π² serverNP β¦ */
} /* ΠΠΎΠ½Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°. ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. */
/* ΠΠΎΠ½Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°. ΠΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΡΡΡΡ; Π²ΡΠΉΡΠΈ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ°. */
_tprintf(_T("ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°# %d\n"), pThArg->number);
shutdown(ConnectSock, 2);
closesocket(ConnectSock);
pThArg->status = 1;
if (strcmp(Request.Record, "$ShutDownServer") == 0) {
pThArg->status = 3;
ShutFlag = TRUE;
}
return pThArg->status;
}
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
Π ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π·Π΄Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π°, Π΄Π°Π½Π½Π°Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ. ΠΡΠ»ΠΈ Π½Π° Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅, ΠΈ ΠΈΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΡΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π°ΡΠ°ΠΊΠΎΠ²Π°ΡΡ Π²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π·Π°ΠΏΡΡΡΠΈΠ² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, ΡΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π° Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ.
ΠΠΎΠ»Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² Π³Π»Π°Π²Π΅ 15 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Windows, Π° Π² ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ 12.14 ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ SSL.
ΠΠ½ΡΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ
ΠΠ°ΠΊ ΡΠ°Π½Π΅Π΅ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ serverSK ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π² Π½Π΅Π΅ Π²Π½ΡΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ 12.3 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ DLL, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΡΡ ΡΡΠ»ΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π°. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π΄Π²Π΅ ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ Π²Π°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠ°Ρ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΠ»ΠΎΠ², ΠΈ ΡΡΠ½ΠΊΡΠΈΡ toupper.
Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠΈΠ½ΡΡΡΠΌ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ°, Π° Π²ΡΠΎΡΡΠΌ β ΠΈΠΌΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΠΎΠΊΠ΅, ΡΡΠΎ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ, ΠΈ ΡΡΠΎ Π΄ΠΈΠΊΡΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ ΠΆΠ΅ΡΡΠΊΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ, Π½ΠΎ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΠΌ, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
β’ Π€ΡΠ½ΠΊΡΠΈΠΈ Π½ΠΈΠΊΠΎΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΡΠΎ ΡΡΠΎ ΠΎΠΊΠ°ΠΆΠ΅Ρ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ.
β’ ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ ΠΈ Π²ΡΠ²ΠΎΠ΄.
β’ Π’Π°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΡΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°, ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΏΠΎΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠ΅ΠΉΡΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ.
β’ Π£ΡΠ΅ΡΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ², Π²ΠΎΠ·Π½ΠΈΠΊΡΠ°Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π½Π΅ Π±ΡΠ»Π° ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠ²ΡΠ°ΡΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΈΠ»ΠΈ Π½Π΅ Π±ΡΠ»ΠΈ Π·Π°ΠΊΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ, Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅, ΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΡ Π²ΡΠ΅ΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
Π‘ΡΠΎΠ»Ρ ΠΆΠ΅ΡΡΠΊΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΡΡΡΡ ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ ΠΏΠΎ ΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π½Π΅ΡΡΠΈ ΡΡΠ΅ΡΠ± Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΡ, Π° ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΠ΅ ΠΈΠΌ ΡΠ΅ΡΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ. Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ ΡΠ»ΡΠΆΠ±Π°, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊ, ΠΈ Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ Π² Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ Π΅Π΅ ΡΠ°Π±ΠΎΡΡ, ΠΎΠ½Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² DLL.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ 12.3 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° DLL, Π²ΠΊΠ»ΡΡΠ°ΡΡΠ°Ρ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 12.3. command: ΠΏΡΠΈΠΌΠ΅Ρ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ²/* ΠΠ»Π°Π²Π° 12. commands.Ρ. */
/* ΠΠΎΠΌΠ°Π½Π΄Ρ Π²Π½ΡΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² serverSK ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. */
/* ΠΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLLs. */
/* Π€ΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ */
/* Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠ΅ΡΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ */
/* ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ°: ΠΊΠΎΠΌΠ°Π½Π΄Π° arg1 arg2 β¦ argn */
/* (ΡΠΎ Π΅ΡΡΡ ΠΎΠ±ΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ°), Π° Π²ΡΠΎΡΡΠΌ β ΠΈΠΌΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. β¦ */
static void extract_token(int, char *, char *);
_declspec(dllexport)
int wcip(char * command, char * output_file)
/* Π‘ΡΠ΅ΡΡΠΈΠΊ ΡΠ»ΠΎΠ²; Π²Π½ΡΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΠΉ. */
/* ΠΠ ΠΠΠΠ§ΠΠΠΠ: ΡΠΏΡΠΎΡΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ; ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΠ΅Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠΈΠ»ΠΈΡΠ° wc. */
{
extract_token(1, command, input_file);
fin = fopen(input_file, "r");
/* β¦ */
ch = nw = nc = nl = 0;
while ((c = fgetc(fin)) != EOF) {
/* β¦ Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄ β Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ β¦ */
}
fclose(fin);
/* ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ. */
fout = fopen(output_file, "w");
if (fout == NULL) return 2;
fprintf(fout, " %9d %9d %9d %s\n", nl, nw, nc, input_file);
fclose(fout);
return 0;
}
_declspec(dllexport)
int toupperip(char * command, char * output_file)
/* ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊ Π²Π΅ΡΡ Π½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ; Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°. */
/* ΠΡΠΎΡΠ°Ρ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π·Π°Π΄Π°Π΅Ρ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» (ΠΏΠ΅ΡΠ²Π°Ρ Π»Π΅ΠΊΡΠ΅ΠΌΠ° β "toupperip"). */
{
/* β¦ */
extract_token(1, command, input_file);
fin = fopen(input_file, "r");
if (fin == NULL) return 1;
fout = fopen(output_file, "w");
if (fout == NULL) return 2;
while ((c = fgetc (fin)) != EOF) {
if (c == '\0') break;
if (isalpha(c)) Ρ = toupper(c);
fputc(c, fout);
}
fclose(fin);
fclose(fout);
return 0;
}
static void extract_token(int it, char * command, char * token) {
/* ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈΠ· "ΠΊΠΎΠΌΠ°Π½Π΄Ρ" Π»Π΅ΠΊΡΠ΅ΠΌΡ Π½ΠΎΠΌΠ΅Ρ "it" (Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π»Π΅ΠΊΡΠ΅ΠΌΡ */
/* ΡΠ²Π»ΡΠ΅ΡΡΡ "0"). Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² "Π»Π΅ΠΊΡΠ΅ΠΌΡ" (token) */
/* Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ Π»Π΅ΠΊΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ. β¦ */
return;
}
ΠΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΡΡΡΠΎΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠΎΡΠΊΠΈΠ² Ρ ΠΎΠ΄Π° DLL ΠΈ TLS
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ serverSK ΠΈ clientSK Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ, ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 4-Π±Π°ΠΉΡΠΎΠ²ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ. ΠΠ±ΡΡΠ½ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΡΠ»ΡΠΆΠ°Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΎΡΠ΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ (ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ).
Π’ΡΡΠ΄Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»ΠΈΠ½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π°ΡΠ°Π½Π΅Π΅ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π°, Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΠ΅ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ». ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² Π±ΡΡΠ΅ΡΠ΅, ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠΎΡΡΠ°Π²Π½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΈ ΡΡΠΎΠΌ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π±ΡΡΠ΅ΡΠ°. Π ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΡΡΠ΅ΠΉΠΊΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
Π Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΉ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ΅, ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Π·Π΄Π΅ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄ΠΎΠ»Π³ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ (multithreaded persistent state problem). ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ. Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ strtook, Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π‘, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π»Π΅ΠΊΡΠ΅ΠΌΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄ΠΎΠ»Π³ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅
Π ΠΈΡΠΊΠΎΠΌΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠΎΡΠ΅ΡΠ°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²:
β’ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° DLL, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΠΈ ΠΏΡΠΈΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
β’ Π€ΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π° Π² DLL.
β’ ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° (TLS, Π³Π»Π°Π²Π° 7). ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ° DLL, Π° ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ β ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΈΠΌΠ΅ΡΡ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ.
β’ Π‘ΡΡΡΠΊΡΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ Π±ΡΡΠ΅Ρ ΠΈ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΈ Π΅Π³ΠΎ Π°Π΄ΡΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² Π·Π°ΠΏΠΈΡΠΈ TLS Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠΈ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠ°ΠΌΡΡΡ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠ°Ρ Π΅Π³ΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, TLS ΠΈΠ³ΡΠ°Π΅Ρ ΡΠΎΠ»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠΏΠΈΡ ΡΡΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ: Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ DLL Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΊΠ΅Ρ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 12.4 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ DLL, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΡΡΠΎΠΊ (Π² ΠΈΠΌΠ΅Π½Π°Ρ ΠΊΠΎΡΠΎΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ "CS", ΠΎΡ character string β ΡΡΡΠΎΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²), ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ° (socket streaming functions): SendCSMessage ΠΈ ReceiveCSMessage, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π° DllMain (ΡΠΌ. Π³Π»Π°Π²Ρ 5). Π£ΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ³ΡΠ°ΡΡ ΡΡ ΠΆΠ΅ ΡΠΎΠ»Ρ, ΡΡΠΎ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ReceiveMessage, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ 12.1 ΠΈ 12.2, ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡ ΠΈΡ .