Функция TCPAccept

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


TCPAccept

Разрешает входящие попытки подключения к сокету.

TCPAccept ( mainsocket )

Параметры

mainsocket Основной идентификатор сокета (SocketID) возвращаемый функцией TCPListen.

Возвращаемое значение

Успех:Возвращает идентификатор подключенного сокета.
Ошибка:Возвращает -1 и устанавливает @error
@error:Возвращает значения windows API WSAGetError (смотрите MSDN).

См. также

TCPStartup, TCPListen, TCPTimeout (Опция), TCPCloseSocket, TCPRecv

Пример

; Этот скрипт - сервер, запускайте его первым! (Вторым запускайте второй пример из функции TCPConnect, который является клиентом).

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)

    If @error Then ; Если ошибка, то выход
        ; Кто-то возможно уже прослушивает этот IP-адрес и порт (ещё одна копия скрипта уже выполняется?).
        MsgBox(4096 + 16, "Сервер", "Не удалось прослушать сокет, @error = " & @error)
        Return False
    EndIf

    ; Переменная для клиентского сокета.
    Local $iSocket = 0
    Do ; Ожидание кого-то, кто подключится (Без ограничений).
        ; Принимает входящие соединения, если имеются (Сокет закрывается, при завершении; один сокет на одного клиента).
        $iSocket = TCPAccept($iListenSocket)

        If @error Then ; Если ошибка, то выход
            MsgBox(4096 + 16, "Сервер", "Не удалось принять входящее соединение, @error = " & @error)
            Return False
        EndIf
    Until $iSocket <> -1 ; Если не равно -1, это означает, что клиент подключен.

    ; Закрывает прослушиваемый сокет, чтобы позволить соединение в дальнейшем.
    TCPCloseSocket($iListenSocket)

    MsgBox(4096, "Сервер", "Клиент подключен.")

    TCPCloseSocket($iSocket) ; Закрывает сокет
EndFunc   ;==>Example

Func OnAutoItExit()
    TCPShutdown() ; Останавливает TCP службу.
EndFunc   ;==>OnAutoItExit