Что нового

[Сеть, интернет] Помогите запустить сервер на много подключений

  • Автор темы max1300
  • Дата начала
M

max1300

Гость
вот имеется такой код
код сервера,мне нужно чтобы на сервер подключилось больше ну предположим человек а не один ну например 30 или 3 человека
Код:
TCPStartup()

$duyay = TCPListen(@IPAddress1,80)

Do

$bro = TCPAccept($duyay)

Until $bro <> -1  ;пропускает только одно подключение 

TCPShutdown()
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
#Include <Array.au3>

Local $aClients[50] = [ 0 ]

TCPStartup()
$duyay = TCPListen(@IPAddress1,80)

While 1
	If $aClients[0] < 30 Then ;30 клиентов
		$bro = TCPAccept($duyay)
		If $bro <> -1 Then
			$Idx = $aClients[0] + 1
			; -
			$aClients[0] = $Idx
			$aClients[$Idx] = $bro
		EndIf
	EndIf

	For $Idx = 1 To $aClients[0] Step 1
		;Получаем данные с этого клиента
		TCPRecv( $aClients[$Idx] ...

		; ...

		;Отключаем этого клиента
		If ... Then
			TCPCloseSocket( $aClients[$Idx] )
			_ArrayDelete( $aClients, $Idx )
			$aClients[0] -= 1
		EndIf
	Next
WEnd

TCPShutdown()
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Вот и я написал код (писал быстро, не проверял).
Код:
Global $duyay, $bro, $aConnections[0]
TCPStartup()

$duyay = TCPListen(@IPAddress1,80)

While 1
If UBound($aConnections) >= 10 Then ExitLoop; установить лимит в 10 подключений
$bro = TCPAccept($duyay)
If $bro <> -1 Then
ReDim $aConnections[UBound($aConnections)+1]
$aConnections[UBound($aConnections)-1] = $bro
ConsoleWrite("New connection: "&UBound($aConnections)&@CRLF)
EndIf
WEnd
 
Автор
M

max1300

Гость
проверим :scratch:



Добавлено:
Сообщение автоматически объединено:

алекс ты не мог бы написать то же самый код но со считыванием данных с клиента
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
max1300
Держи, полагаю в таком быдло-виде тебе проще усвоить:
Код:
#Include <Array.au3>

Local $aClients[50] = [ 0 ]

TCPStartup()
$duyay = TCPListen("127.0.0.1",1337)
While 1
If $aClients[0] < 30 Then ;30 клиентов
$bro = TCPAccept($duyay)
If $bro <> -1 Then
$Idx = $aClients[0] + 1
$aClients[0] = $Idx
$aClients[$Idx] = $bro
EndIf
EndIf
For $Idx = 1 To $aClients[0] Step 1
$sRecv = TCPRecv( $aClients[$Idx], 1024 )
Switch @error
Case -1
;Клиент молчит
Case 0
If $sRecv = "disconnect" Then
ContinueCase
Else
ConsoleWrite( $Idx & " Принято: " & $sRecv & @CRLF )
EndIf
Case Else
ConsoleWrite( $Idx & "Отключен" & @CRLF )
TCPCloseSocket( $aClients[$Idx] )
_ArrayDelete( $aClients, $Idx )
$aClients[0] -= 1
EndSwitch
$sRecv = ''
Next
WEnd
TCPShutdown()
 
Автор
M

max1300

Гость
файрекс твой прошлый код содержал много синтаксических ошибок :stars:
 
Верх