Есть девайс который может общаться по телнету. Написал небольшую программу которая отправляет в него команды и забирает ответ.
Global port = 23 ; Порт
Global conID.i ; ИД соединения
Procedure.s connect(stat.s) ;Процедура подключения с возвратом сообщения о статусе подключения
ConID.i = OpenNetworkConnection("192.168.0.138", Port, #PB_Network_TCP|#PB_Network_IPv4) ; Подключение к хосту
If conID.i > 0
stat.s="Ok"
Else
stat.s="Error"
EndIf
ProcedureReturn stat.s ; Возврат статуса соединения
EndProcedure
Procedure sendData(message.s) ; Процедура отправки сообщения
*Buffer_to = AllocateMemory(100)
mem=PokeS(*Buffer_to,Chr(94) + message.s + Chr(13), #PB_Ascii) ; Формат bestcode
SendNetworkData(ConID.i, *Buffer_to, mem)
FreeMemory(*Buffer_to)
EndProcedure
Procedure reservData(con.i) ; Процедура приема сообщения
message.s
size.i
Repeat
Select NetworkClientEvent(ConID.i)
Case #PB_NetworkEvent_Data
*mem = AllocateMemory(100)
size.i = ReceiveNetworkData(ConID.i, *mem, 100)
message.s = PeekS(*mem, size, #PB_Ascii)
FreeMemory(*mem)
Debug message.s
Case #PB_NetworkEvent_None
Delay(30)
Case #PB_NetworkEvent_Disconnect
Debug "Closed"
Quit = 1
EndSelect
Until Quit
EndProcedure
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
ConID.i = OpenNetworkConnection("192.168.0.138", Port, #PB_Network_TCP|#PB_Network_IPv4) ; Подключение к хосту
If conID.i <> 0
stat.s="Ok"
Else
stat.s="Error"
EndIf
Debug stat.s
ThreadID=CreateThread(@reservData(),conID.i)
For i = 1 To 50 Step 1
Delay (500)
sendData("vv")
Next i
End
Но по прошествии 16 - 20 отправленных и полученных сообщений, соединение рвется.
Отредактировано Dadenard (14.04.2021 07:49:41)
