int listen(SOCKET s, int nQueueSize);
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ nQueueSize ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΊΠ΅ΡΠ°. Π Π²Π΅ΡΡΠΈΠΈ Winsock 2.0 Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΡ Ρ, Π½ΠΎ Π² Π²Π΅ΡΡΠΈΠΈ 1.1 ΠΎΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ SOMAXCON (ΡΠ°Π²Π½ΡΠΌ 5).
ΠΡΠΈΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ accept, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ (listening state), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ accept, Π° Π½Π΅ Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°.
Π€ΡΠ½ΠΊΡΠΈΡ accept Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π΅ ΠΏΠΎΡΡΡΠΏΠΈΡ Π·Π°ΠΏΡΠΎΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΎΠΊΠ΅Ρ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°. Π₯ΠΎΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΈ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ ΡΡ ΡΠΎΠΊΠ΅ΡΠΎΠ², Π° Π² ΡΠ΅ΡΠ²Π΅ΡΠ΅ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 12.2) Π΄Π»Ρ ΠΏΡΠΈΠ΅ΠΌΠ° Π·Π°ΠΏΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ΡΡ ΡΠ΅ΡΠ²Π΅ΡΡ.
SOCKET accept(SOCKET s, LPSOCKADDR lpAddr, LPINT lpAddrLen);
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡs β ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠΎΠΊΠ΅Ρ. Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΡΠΎΠΊΠ΅Ρ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ socket, bind ΠΈ listen.
lpAddr β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ sockaddr_in, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π°Π΄ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
lpAddrLen β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ sockaddr_in. ΠΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ accept ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ sizeof(struct sockaddr_in).
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΊΡΡΡΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠΎΠ²
ΠΠ»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ shutdown(s, how). ΠΡΠ³ΡΠΌΠ΅Π½Ρ how ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ: 1, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·ΠΎΡΠ²Π°Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠΎΡΡΠ»ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΈ 2, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°Π·ΡΡΠ²Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΏΠΎΡΡΠ»ΠΊΠΈ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. Π€ΡΠ½ΠΊΡΠΈΡ shutdown Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΡΠ΅ΡΡΡΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠΎΠΊΠ΅ΡΠΎΠΌ, Π½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ»ΠΊΠΈ ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ° Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ Π΄ΠΎ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ shutdown ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠΎΠΊΠ΅Ρ.
ΠΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΎΠΊΠ΅ΡΠΎΠΌ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π°, Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΊΡΡΡΡ, Π²ΡΠ·Π²Π°Π² ΡΡΠ½ΠΊΡΠΈΡ closesocket(SOCKET s). Π‘Π½Π°ΡΠ°Π»Π° ΡΠ΅ΡΠ²Π΅Ρ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠΎΠΊΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ accept, Π° Π½Π΅ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠΎΠΊΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ socket. Π‘Π΅ΡΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠΎΠΊΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΡΠΎΠΊΠ΅ΡΠΎΠΌ ΠΊΠ°ΠΊ Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ ΡΠΈΠΏΠ° HANDLE ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ReadFile ΠΈ WriteFile, ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡΡ ΡΠΎΠΊΠ΅Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ CloseHandle Π²Π°ΠΌ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ; Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ closesocket.
ΠΡΠΈΠΌΠ΅Ρ: ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠΊΠ΅Ρ ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π²Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: htons ("host to network short" β "Π±Π»ΠΈΠΆΠ½ΡΡ ΡΠ²ΡΠ·Ρ") ΠΈ htonl ("host to network long" β "Π΄Π°Π»ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ"), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° ΠΊ ΡΠΎΡΠΌΠ΅ Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ Π±Π°ΠΉΡΠΎΠ², ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ IP.
ΠΠΎΠΌΠ΅ΡΠΎΠΌ ΠΏΠΎΡΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» ΡΠΈΠΏΠ° short integer, Π½ΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠ»ΡΠΆΠ± ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΈΡΠ»Π° Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 1025β5000. ΠΠΎΡΡΡ Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌΠΈ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌΠΈ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠ»ΡΠΆΠ±, ΠΊΠ°ΠΊ telnet ΠΈΠ»ΠΈ ftp, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ»ΡΠΆΠ±.
struct sockaddr_in SrvSAddr; /* ΠΠ΄ΡΠ΅ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°. */
struct sockaddr_in ConnectAddr;
SOCKET SrvSock, sockio;
β¦
SrvSock = socket(AF_INET, SOCK_STREAM, 0);
SrvSAddr.sin_family = AF_INET;
SrvSAddr.sin_addr.s_addr = htonl(INADDR_ANY);
SrvSAddr.sin_port = htons(SERVER_PORT);
bind(SrvSock, (struct sockaddr *)&SrvSAddr, sizeof SrvSAddr);
listen(SrvSock, 5);
AddrLen = sizeof(ConnectAddr);
sockio = accept(SrvSock, (struct sockaddr *) &ConnectAddr, &AddrLen);
β¦ ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΎΡΠ²Π΅ΡΠΎΠ² β¦
shutdown(sockio);
closesocket(sockio);
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ°
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΡΡΠ°Π½ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΆΠ΅Π»Π°Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠΊΠ΅Ρ, Π²ΡΠ·Π²Π°Π² ΡΡΠ½ΠΊΡΠΈΡ socket. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, Π°, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°, Π°Π΄ΡΠ΅Ρ Ρ ΠΎΡΡΠ° ΠΈ Π΄ΡΡΠ³ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ β connect.
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ
ΠΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ΅ΡΠ²Π΅Ρ Ρ ΡΠΎΠΊΠ΅ΡΠΎΠΌ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ Ρ Π½ΠΈΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ connect.
int connect(SOCKET s, LPSOCKADDR lpName, int nNameLen);
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡs β ΡΠΎΠΊΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ socket.
lpName β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ sockaddr_in, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ° ΠΈ IP-Π°Π΄ΡΠ΅ΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΡΠΎΠΊΠ΅ΡΠΎΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ nNameLen Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ sizeof (struct sockaddr_in).
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0 ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ SOCKET_ERROR ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΡΠΈΠ±ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠΎΠΊΠ΅ΡΠ° ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ.
Π‘ΠΎΠΊΠ΅Ρ s Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ ΠΏΠΎΡΡΠΎΠΌ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ connect, Ρ ΠΎΡΡ ΡΡΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅ΡΡΠΎ. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΡΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ».
ΠΡΠΈΠΌΠ΅Ρ: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ
ΠΠΎΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ, Π½ΠΎ Π°Π΄ΡΠ΅ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ connect. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π·Π΄Π΅ΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, Π½ΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ IP-Π°Π΄ΡΠ΅Ρ (ΡΠ΅ΠΊΡΡΠΎΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ "192.76.33.4") Π·Π°Π΄Π°Π΅ΡΡΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ argv[1] ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
SOCKET ClientSock;
β¦
ClientSock = socket(AF_INET, SOCK_STREAM, 0);
memset(&ClientSAddr, 0, sizeof(ClientSAddr));
ClientSAddr.sin_family = AF_INET;
ClientSAddr.sin_addr.s_addr = inet_addr(argv[1]);
ClientSAddr.sin_port = htons(SERVER_PORT);
ConVal = connect(ClientSock, (struct sockaddr *)&ClientSAddr, sizeof(ClientSAddr));
ΠΡΠΏΡΠ°Π²ΠΊΠ° ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΡ, ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ send ΠΈ recv, ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ (ΠΏΠ΅ΡΠ΅Π΄ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π±ΡΡΠ΅ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ send ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ const). ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΈ send.
int send(SOCKET s, const char * lpBuffer, int nBufferLen, int nFlags);
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π±Π°ΠΉΡΠΎΠ². ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ SOCKET_ERROR ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΡΠΈΠ±ΠΊΡ.
nFlags β ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΡΡΡΠ΅Π½Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ), Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ MSG_PEEK ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π±Π΅Π· ΠΈΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ.
Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ send ΠΈ recv Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΌΠΈ (atomic), ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΡΡΠΎ Π·Π°ΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ. ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° "ΠΊΠΎΡΠΎΡΠΊΠΈΡ " ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ("short sends") Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ΅Π΄ΠΊΠΎ, Ρ ΠΎΡΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, ΡΡΠΎ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΠΈ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΡΠΈΠ΅ΠΌΡ "ΠΊΠΎΡΠΎΡΠΊΠΈΡ " ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ("short receives"). ΠΠΎΠ½ΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π»ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ², Π·Π΄Π΅ΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²ΡΠ΅ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ.
Π‘ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ReadFile ΠΈ WriteFile, ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΠΎΠΊΠ΅Ρ ΠΊ ΡΠΈΠΏΡ HANDLE.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ²
ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² Π³Π»Π°Π²Π΅ 11, ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΡΠΎΠΊΠ΅ΡΡ, Π½ΠΎ Π² ΡΠΏΠΎΡΠΎΠ±Π°Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ.
β’ ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
β’ ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ ΡΡΠ΅Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ReadFile ΠΈ WriteFile, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠΎΠΊΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ send ΠΈ recv.
β’ Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΡΠΎΠΊΠ΅ΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π³ΠΈΠ±ΠΊΠΈ, ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠΎΠΊΠ΅ΡΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, TCP ΠΈΠ»ΠΈ UDP. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ»ΡΠ³ΠΈ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ².
β’ Π‘ΠΎΠΊΠ΅ΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅, ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, ΠΎΡΠ»ΠΈΡΠ½ΡΠΌΠΈ ΠΎΡ Windows.
ΠΠΌΠ΅ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ²