Что нового

При отключении клиента, TCPRecv не выдает ошибку

avtoIT

Новичок
Сообщения
94
Репутация
0
Почему-то при запуске данного сервера размер очереди никогда не уменьшается, хотя клиенты отключаются.
В данном примере ошибку должна ловить функция 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()
 
Верх