TCPListen
Создает сокет для прослушивания входящих соединений.
TCPListen ( IPAddr, port [, MaxPendingConnection ] )
Параметры
IPAddr | IP-адрес, например "192.162.1.1" (десятично-точечное представление, IpV4). |
port |
Порт, к которому созданный сокет будет подключен. |
MaxPendingConnection |
[необязательный] Максимальная длина очереди ожидающих соединения. По умолчанию устанавливается максимально разумное значение. |
Возвращаемое значение
Успех: | Возвращает основной идентификатор сокета. |
Ошибка: | Возвращает -1 или 0 и устанавливает @error. |
@error: | 1 Неверный IP-адрес. |
2 Неверный порт. | |
Возвращает значения windows API WSAGetError (смотрите MSDN). |
См. также
TCPStartup, TCPConnect, TCPAccept, TCPTimeout (Опция), TCPCloseSocket, TCPSend, TCPShutdownПример
Example()
Func Example()
TCPStartup() ; Запуск TCP служб.
; Регистрация функции OnAutoItExit для остановки служб при завершении скрипта.
OnAutoItExitRegister("OnAutoItExit")
; Установка IP-адреса и порта
Local $sIPAddress = "127.0.0.1" ; Этот IP-адрес работает только для теста на вашем компьютере.
Local $iPort = 65432 ; Порт, используемый для соединения.
; Создает сокет связанный с указанным IP-адресом и портом с максимальным количеством подключений на ожидании 100.
Local $iListenSocket = TCPListen($sIPAddress, $iPort, 100)
; Примечания: Вы можете прослушивать только приватные IP, такой как используется здесь;
; или в диапазоне от 192 до 223 (обычно 192.168.X.X, использование @IPAddress1, чтобы тестировать на вашем локальном IP [Вам нужно другой компьютер]).
; Идентификатор прослушиваемого сокета используется только для TCPAccept функции.
If @error Then ; Если ошибка, то выход
; Кто-то возможно уже прослушивает этот IP-адрес и порт (ещё одна копия скрипта уже выполняется?).
Local $iError = @error
MsgBox(4096 + 16, "", "Не удалось прослушать сокет, @error = " & $iError)
Return False
Else
MsgBox(4096, "", "Успешное прослушивание.")
EndIf
; Закрывает прослушиваемый сокет, чтобы позволить соединение в дальнейшем.
; Пока сокет не закрыт, любая другая программа не может связаться с этим же IP-адресом и портом.
TCPCloseSocket($iListenSocket)
EndFunc ;==>Example
Func OnAutoItExit()
TCPShutdown() ; Останавливает TCP службу.
EndFunc ;==>OnAutoItExit