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