ΠΠ»Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° TCP Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°Π΄Π°ΡΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π° Π½Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°. Π‘ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΡΡΠΎΠ², ΠΎΡΠΊΡΡΡΡΡ Π΄Π»Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠΎΡΡ Π½Π΅ ΠΈΠ· ΡΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ°, ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΊ Π½Π΅ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ. ΠΠ»Ρ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΡΠΎΠΆΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΡΠΎ ΠΊ Π΄Π΅Π»Π°ΡΡ, ΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠΉ Π² "Π±Π΅Π»ΠΎΠΌ" ΡΠΏΠΈΡΠΊΠ΅ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π°, ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ, ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΠΊΡΠ°Π½ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΡΠΎΠ³ΠΎ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΠ΄Π΅ΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΠ΅ΡΠ΅Π²ΡΠΌ ΡΠΊΡΠ°Π½ΠΎΠΌ. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°.
ΠΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΠ· ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎ ΡΠ΅ΡΠΈ, ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΡΡΠ½ΡΡΡΡΡ ΡΠ°Π±ΠΎΡΠΎΠΉ ΡΠ΅ΡΠ΅Π²ΡΡ ΡΠΊΡΠ°Π½ΠΎΠ². ΠΡΠΎΠΊΠΎΠ½ΡΡΠ»ΡΡΠΈΡΡΠΉΡΠ΅ΡΡ Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΠΈ Π½Π°ΡΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΡΠ΅ΡΠ΅Π²ΡΡ ΡΠΊΡΠ°Π½ΠΎΠ² Π² Π²Π°ΡΠ΅ΠΉ ΡΠ΅ΡΠΈ ΠΈ ΡΠΎΠ³Π»Π°ΡΡΠΉΡΠ΅ Ρ Π½ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠΌΠΈ ΠΏΠΎΡΡΠ°ΠΌΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° Π²Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
2.1.8. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠ°
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ. ΠΠ°Π»Π΅Π΅ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ wsock32.dll (Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ws2_32.dll; Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ), Π΄Π»Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Delphi Π² ΡΠ°Π·Π΄Π΅Π» uses Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ WinSock. ΠΠΎΠ»Π½ΠΎΠ΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π·Π΄Π΅ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ MSDN), Π½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π΄Π°Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π΅Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² MSDN Π½Π°ΠΉΡΠΈ ΡΡΡΠ΄Π½ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΡΠ»Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Ρ ΡΡΠΈΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² MSDN ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ Π² Π½Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π₯ΠΎΡΡ ΡΠ°Π½Π΅Π΅ ΠΌΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈΡΡ, ΡΡΠΎ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠΎΠΊΠ΅ΡΡ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΅ΡΡΡ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΡΠΎΠΊΠ΅ΡΠ°ΠΌ Windows, Π½Π΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ²ΡΠΈΡΡ Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅. ΠΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ WSAStartup, WSACleanup ΠΈ WSAGetLastError (ΠΏΡΠ΅ΡΠΈΠΊΡ WSA ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Windows Sockets API ΠΈ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΡΠ½ΠΎΡΡΡΠΈΡ ΡΡ ΠΊ Windows-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ²).
Π€ΡΠ½ΠΊΡΠΈΡ WSAStartup ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ². ΠΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ·Π²Π°ΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄:
function WSAStartup(wVersionRequired: Word; var WSData: TWSAData): Integer;
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ wVersionRequired Π·Π°Π΄Π°Π΅Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π²Π΅ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ². ΠΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ Π·Π°Π΄Π°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅ΡΡΠΈΡ, ΡΡΠ°ΡΡΠΈΠΉ β Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ. ΠΠΎΠΏΡΡΡΠΈΠΌΡ Π²Π΅ΡΡΠΈΠΈ 1.0 ($0001), 1.1 ($0101), 2.0 ($0002) ΠΈ 2.2 ($0202). ΠΠΎΠΊΠ° ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Π½Π΅Ρ, Π½ΠΎ Π²Π΅ΡΡΠΈΠΈ 2.0 ΠΈ Π²ΡΡΠ΅ ΠΏΠΎΠΊΠ° Π»ΡΡΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Ρ.ΠΊ. ΠΌΠΎΠ΄ΡΠ»Ρ WinSock Π½Π΅ ΡΠ°ΡΡΡΠΈΡΠ°Π½ Π½Π° ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ. ΠΠΎΠΏΡΠΎΡΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π²Π΅ΡΡΠΈΠΉ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ, Π° ΠΏΠΎΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠΌΡΡ Π²Π΅ΡΡΠΈΠ΅ΠΉ 1.1.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ WSData Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ, Ρ.Π΅. Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠΌΠ΅Π»Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ, Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ. Π§Π΅ΡΠ΅Π· ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠΎΠΊΠ΅ΡΠΎΠ². Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΡΠΈ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ.
ΠΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ, Π·Π°Π²Π΅ΡΡΠΈΠ²ΡΠ°ΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ SOCKET_ERROR.
Π€ΡΠ½ΠΊΡΠΈΡ WSACleanup Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΡΠΎΠΊΠ΅ΡΠΎΠ². ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ»Ρ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. Π€ΡΠ½ΠΊΡΠΈΡ WSAStartup Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, Π΄Π°ΠΆΠ΅ Π² ΠΌΠ½ΠΎΠ³ΠΎΠ½ΠΈΡΠ΅Π²ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π² ΡΡΠΎΠΌ Π΅Π΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ°ΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, CoInitialize, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΈΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ COM. Π€ΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ β Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΅Π΅ Π²ΡΠ·ΠΎΠ² Π½Π΅ Π΄Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ°, Π½ΠΎ Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΡΠΎΠΊΠ΅ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΡ WSACleanup Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Π° ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ ΡΠ°Π·, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΡΠ»Π° Π²ΡΠ·Π²Π°Π½Π° WSAStartup.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΡΡΠ΄ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π½ΠΎ Π½Π΅ Π΄Π°ΡΡΠ΅Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° (Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π°). ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠ»ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ WSAGetLastError, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠ°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π΄ΡΠ΅ΠΉ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠΎΠΊΠ΅ΡΠΎΠ² Π² Π΄Π°Π½Π½ΠΎΠΉ Π½ΠΈΡΠΈ. ΠΠΎΡΠ»Π΅ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ WSAGetLastError, ΡΡΠΎΠ±Ρ Π²ΡΡΡΠ½ΠΈΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ Π½Π΅ΡΠ΄Π°ΡΠΈ.
ΠΠ°Π±Π΅Π³Π°Ρ ΡΡΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄, ΠΎΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠΊΠ΅ΡΠΎΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ getsockopt, ΠΊΠΎΡΠΎΡΠ°Ρ, ΠΊΡΠΎΠΌΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½Π° ΠΌΠ΅Π½Π΅Π΅ ΡΠ΄ΠΎΠ±Π½Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠΈ, Π»ΡΡΡΠ΅ ΠΏΡΠΈΠ±Π΅Π³Π½ΡΡΡ ΠΊ WSAGetLastError. Π ΡΠΎΠΌΡ ΠΆΠ΅, getsockopt Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΡΠΎΠΊΠ΅ΡΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π΅Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ, Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠΎΠΊΠ΅ΡΠΎΠΌ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ socket ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠΌ:
function socket(af, struct, protocol: Integer): TSocket;
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Π°f Π·Π°Π΄Π°ΡΡ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ Π°Π΄ΡΠ΅ΡΠΎΠ² (address family). ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ (Ρ.Π΅. ΠΏΠΎ ΡΡΡΠΈ Π΄Π΅Π»Π°, ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠ΅ΠΊ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ²) Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ°. ΠΠ»Ρ TCP/IP ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π²Π΅Π½ AF_INET, Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅ΠΊΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ WinSock.pas.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ struct ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΠΏ ΡΠΎΠΊΠ΅ΡΠ° ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ: SOCK_STREAM (Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ²) ΠΈ SOCK_DGRAM (Π΄Π»Ρ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ²).
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ protocol ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠΊΠ΅ΡΠΎΠΌ. ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π²Π½ΡΠΌ Π½ΡΠ»Ρ β ΡΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ, Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΏΠ΅ΡΠ²ΡΠΌΠΈ Π΄Π²ΡΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΡΡΠ΅ΠΊΠ° TCP/IP ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β TCP, Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΠ½ΡΠΉ β UDP. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°Π²Π½ΠΎ IPPROTO_IP. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠ°Π²Π½ΠΎ 0, ΠΈ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ: Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΡΡΠ΅ΠΊΠ° TCP/IP ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» RDP β Reliable Datagram Protocol, Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»), ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π·Π΄Π΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ (Π΄Π»Ρ RDP ΡΡΠΎ Π±ΡΠ΄Π΅Ρ IPPROTO_RDP). ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π½ΠΎ Π·Π°Π΄Π°ΡΡ TCP ΠΈΠ»ΠΈ UDP Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ IPPROTO_TCP ΠΈ IPPROTO_UDP ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π’ΠΈΠΏ TSocket ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° ΡΠΎΠΊΠ΅ΡΠ°. Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΠ½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ 32-Π±ΠΈΡΠ½ΡΠΌ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΌ ΡΠ΅Π»ΡΠΌ ΡΠΈΠΏΠΎΠΌ, Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ Π»ΡΡΡΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡ, Ρ.ΠΊ. Π»ΡΠ±ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΈΠΏΠ° TSocket Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½Ρ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ socket, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΏΠ° ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ° ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ INVALID_SOCKET. ΠΡΠΈΡΠΈΠ½Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ WSAGetLastError.
Π‘ΠΎΠΊΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ socket, Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ Π½ΠΈ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ. ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ bind, ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ:
function bind(s: TSocket; var addr: TSockAddr; namelen: Integer): Integer;
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠΎΠΊΠ΅ΡΠ°. ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊ Π°Π΄ΡΠ΅ΡΡ. ΠΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ»ΡΡΠ°ΡΡ , ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Π΅ΡΠ½ΡΠ»Π° ΡΡΠ½ΠΊΡΠΈΡ socket. ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π΄ΡΠ΅Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΡΠΎΠΊΠ΅Ρ, Π° ΡΡΠ΅ΡΠΈΠΉ β Π΄Π»ΠΈΠ½Ρ ΡΡΡΡΠΊΡΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ Π°Π΄ΡΠ΅Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ bind ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠΎΠΊΠ΅ΡΠΎΠ², ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΡΡΠ΅ΠΊΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ° Π² Π½Π΅ΠΉ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ. ΠΠΏΡΠΎΡΠ΅ΠΌ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ WinSock Π΄Π»Ρ Delphi Π²ΡΠ±ΡΠ°Π»ΠΈ Π½Π΅ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ° ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΠΠ°ΡΠΊΠ°Π»Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΌΠ΅ΡΠ΅ ΡΡΡΠ°ΡΠ΅Π½Π°. Π ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΈ bind ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
int bind(SOCKET s, const struct sockaddr FAR* name, int namelen);
ΠΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ sockaddr. ΠΠ΄Π½Π°ΠΊΠΎ C/C++ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΡΡ ΡΡΡΡΠΊΡΡΡΡ, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ². ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΠ²ΠΎΡ ΡΡΡΡΠΊΡΡΡΠ°, ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡ ΡΡΡΡΠΊΡΡΡy. ΠΡΠ»ΠΈ Π±Ρ Π°Π²ΡΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ WinSock ΠΎΠΏΠΈΡΠ°Π»ΠΈ Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡΠ°Π»ΠΈ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π° Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ: ΠΈ ΡΠ°ΠΌ, ΠΈ ΡΠ°ΠΌ Π² ΡΡΠ΅ΠΊ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ bind Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, ΠΊΡΠΎΠΌΠ΅ TSockAddr, Π° ΡΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π½Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π° ΠΈ ΡΠ΄ΠΎΠ±Π½Π°, ΠΏΠΎ ΡΡΡΠΈ Π΄Π΅Π»Π°, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ΅ΠΊΠ° TCP/IP. Π Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ bind ΠΈΠ· wsock32.dll Ρ Π½ΡΠΆΠ½ΡΠΌ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠΌ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Ρ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ. ΠΠΏΡΠΎΡΠ΅ΠΌ ΠΌΡ Π·Π΄Π΅ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌΠΈ TCP ΠΈ UDP, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ.