Почему-то при запуске данного сервера размер очереди никогда не уменьшается, хотя клиенты отключаются.
В данном примере ошибку должна ловить функция TCPRecv, но этого не происходит.
Вот на этом можно сделать тест:
В данном примере ошибку должна ловить функция TCPRecv, но этого не происходит.
Код:
#include 'DataStructures.au3'
Global $sIPAddress = @IPAddress1
Global $iPort = 12345
Global $iMax = 20
Global $iListenSocket = _TCP_Start()
Global $iSocket = -1
Global $qQueueClient = _Quere_Create()
While 1
ToolTip(_Quere_GetSize($qQueueClient), 1, 1)
$iSocket = TCPAccept($iListenSocket)
If @error Then ContinueLoop
If $iSocket <> -1 Then _Quere_Push($qQueueClient, $iSocket)
For $iCouner = 1 To _Quere_GetSize($qQueueClient)
$iNowClient = _Quere_Pop($qQueueClient)
$sData = TCPRecv($iNowClient, 2048)
If @error Then
TCPCloseSocket($iNowClient)
ContinueLoop
EndIf
_Quere_Push($qQueueClient, $iNowClient)
If $sData = '' Then ContinueLoop
TCPSend($iNowClient, $sData + '1')
Next
WEnd
Func _TCP_Start()
TCPStartup()
$fpsiListenSocket = TCPListen($sIPAddress, $iPort, $iMax)
if @error Then Exit
Return $fpsiListenSocket
EndFunc
Вот на этом можно сделать тест:
Код:
$ip = @IPAddress1
$port = 12345
TCPStartup()
$ss = TCPConnect($ip, $port)
TCPCloseSocket($ss)
TCPShutdown()