Что нового

Сеть, интернет Сетевое взаимодействие 2х скриптов одним соединением

ahjkcfout7

Знающий
Сообщения
26
Репутация
6
Добрый день. Столкнулся с такой проблемой, как передача данных по сети в одном соединении. Этот вариант работает отлично. Вот первый скрипт

Код:
TCPStartup()
$iListenSocket = TCPListen("127.0.0.1", 1025)
$iSocket=TCPConnect("127.0.0.2", 1025)
TCPSend($iSocket, StringToBinary("Hello",4))
Sleep(50)
TCPCloseSocket($iSocket)
OnAutoItExitRegister("_exit")
while true
$iSocket_reciever = TCPAccept($iListenSocket)
    If $iSocket_reciever <> -1 Then
        While True
            $sData = TCPRecv($iSocket_reciever, 2048, 1)
            If @error Then ExitLoop
            $sData = BinaryToString($sData, 4)
            if $sData="Hello" Then
               ConsoleWrite($sData&@CR)
               $iSocket=TCPConnect("127.0.0.2", 1025)
            TCPSend($iSocket, StringToBinary("Hello",4))
            Sleep(50)
            TCPCloseSocket($iSocket)
            exitloop
            endif
       WEnd
    EndIf
wend
Func _exit()
    TCPShutdown()
EndFunc   ;==>_exit

И аналогичный второй

Код:
TCPStartup()
$iListenSocket = TCPListen("127.0.0.2", 1025)
$iSocket=TCPConnect("127.0.0.1", 1025)
TCPSend($iSocket, StringToBinary("Hello",4))
Sleep(50)
TCPCloseSocket($iSocket)
OnAutoItExitRegister("_exit")
while true
$iSocket_reciever = TCPAccept($iListenSocket)
    If $iSocket_reciever <> -1 Then
        While True
            $sData = TCPRecv($iSocket_reciever, 2048, 1)
            If @error Then ExitLoop
            $sData = BinaryToString($sData, 4)
            if $sData="Hello" Then
               ConsoleWrite($sData&@CR)
               $iSocket=TCPConnect("127.0.0.1", 1025)
            TCPSend($iSocket, StringToBinary("Hello",4))
            Sleep(50)
            TCPCloseSocket($iSocket)
            exitloop
            endif
       WEnd
    EndIf
wend
Func _exit()
    TCPShutdown()
EndFunc   ;==>_exit

Суть вопроса состоит в том, чтобы не создавалось огромное количество соеденений, а происходило все в одном (клиент подключается к серверу, а сервер отвечает клиенту в этом же соединении). Я искал справку, форум, пробывал не закрывать сокеты, и не помогло
 

Prog

Продвинутый
Сообщения
537
Репутация
65
1. Лучше не разные IP, а разные порты. То есть IP 127.0.0.1 а порты 1024 и 1025.
2. Сокеты двунаправленные, а значит не нужен сервер и клиент в каждом приложении. То есть одно будет сервером а другое клиентом и обмениваются данными между собой.
 
Автор
A

ahjkcfout7

Знающий
Сообщения
26
Репутация
6
1. Лучше не разные IP, а разные порты. То есть IP 127.0.0.1 а порты 1024 и 1025.
2. Сокеты двунаправленные, а значит не нужен сервер и клиент в каждом приложении. То есть одно будет сервером а другое клиентом и обмениваются данными между собой.
Так как я пишу шифрованый месендер, то разные айпи как раз и нужны. А про двунаправленный сокет я такое не нашел, приведите пример.
 
Верх