Функция TCPListen

         Описание функции


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