Что нового

Как правильно отправлять/получать 2 и более сообщений по TCP

k790

Новичок
Сообщения
239
Репутация
1
Привет!
Никак не могу понять, как работать с TCP.
Возьмём в пример первое сообщение темы: http://autoit-script.ru/index.php?topic=2745.0

lightforever сказал(а):
Код клиента:
Код:
TCPStartup();Инициировать использование службы TCP
$IP = '85.xxx.xx.xx';Указываем адрес к которому будем подключаться (Указываю внешний адрес)
$port = 400;Указываем порт к которому будем подключаться
$socket = TCPConnect($IP, $port);Указыываем ОС создать сокет, подключенный к указанному адресу
$dannie = InputBox('','','');Окно, которое принимает данные для отправки.
$rez = TCPSend($socket, $dannie);Отправляем данные на сервер
If @error <> 0 Then msgbox(0, "Ошибка", "Не удалось отправить данные на сервер")
TCPCloseSocket($socket);Закрываем сокетc
TCPShutdown();Завершить использование службы TCP


Код сервера:
Код:
TCPStartup();Инициировать использование службы TCP
$IP = @IPAddress1;Указываем адрес который будем прослушивать; 
$port = 400;Указываем порт который будем прослушивать
While 1
    $socket = TCPListen($IP, $port, 1);Создаем слушающий сокет, по указанному адресу
    If @error Then ExitLoop;Если не удалось создать сокет, то выйти
    $Connect = -1
    Do
        $Connect = TCPAccept($socket);Указыываем ОС создать сокет если появилось входящее подключение в прослушиваемом сокете
    Until $Connect <> -1;Если клиент подключился, то выйти из цикла, если ошибка или никто не подключился, то продолжить цикл
    While 1
        $dannie = TCPRecv($Connect, 2048);Получаем максимум 2048 символов от клиента
        If @error Then ExitLoop;Если не удалось получить символы, то выйти из цикла
        If $dannie <> "" Then;Если данные получены, то...
                MsgBox(0,'Get',$dannie)
            ExitLoop
        EndIf
        Sleep(30)
    WEnd
    TCPCloseSocket($socket);Закрываем сокет
WEnd
TCPShutdown();Завершить использование службы TCP

Таким образом отправили 1 сообщение, а как отправить 2 и более?
По идеи если сокет открыть и не закрывать, то можно отправить/получить сообщения, но тогда становится много открытых соединений (проверял в cmd-> netstat -anb | find "400")

Поясните пожалуйста, как отправить несколько сообщений правильно или скажите где найти эту документацию на TCP...
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
Возник ещё вопрос, как определить кто не завершил соединение-клиент или сервер?
А то я закрываю и выключаю TCP, а соединения висят, я так понимаю это не есть хорошо...
 
Верх