Что нового

Организация клиенты\сервер Ethernet

VadimKHL

Новичок
Сообщения
155
Репутация
0
Всем привет!

С помощью AutoIt возможно организовать связь нескольких компьютеров?
Если более конкретно, есть 5 компов, с них нужно считывать данные на 6 комп.

Подскажите пожалуйста, как возможно сделать, или где можно почитать про это, желательно с примерами.

Спасибо!
 
Автор
V

VadimKHL

Новичок
Сообщения
155
Репутация
0
По примерам из справки накидал небольшие тестовые клиента и сервера.
Клиент:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>

Opt("GUIOnEventMode", 1) ; Включить режим отслеживания событий GUI.
Opt("TrayIconHide", 1)

Global $IPAddress = "127.0.0.1" ; This IP Address only works for testing on your own computer.
Global $Port = 53555 ; Port used for the connection.
Global $ClientData = 0

; ====================================================================================================================
; Создаем визуальное окно и объекты в нем.
; ====================================================================================================================

; Создать визуальное окно.
$WINGUI = GUICreate("TEST", 470, 245, -1, -1)

; Информауионные строки.
$lbCLN = GUICtrlCreateLabel("SEND DATA:", 10, 10, 80, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)
$idCLN = GUICtrlCreateLabel("0", 85, 10, 65, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)
$lbST = GUICtrlCreateLabel("SERVER STATUS:", 10, 25, 100, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)
$idST = GUICtrlCreateLabel("0", 105, 25, 100, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)

; Системные события.
GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSEEvent")
GUISetState(@SW_SHOW, $WINGUI)

Local $STTCP = TCPStartup() ; Запускаем службу TCP.
If $STTCP <> 1 Then
   MsgBox(1, "Статус запуска сервера TCP", "Ошибка запуска службы TCP!")
EndIf

While 1                  ; Если соединение было разорванно, попробовать снова через 1 секунду.
   _STARTTCPCLIENT()
   Sleep(1000)
WEnd

; ====================================================================================================================
; Клиент TCP.
; ====================================================================================================================

Func _STARTTCPCLIENT()

; Assign a Local variable the socket and connect to a listening socket with the IP Address and Port specified.
Local $iSocket = TCPConnect($IPAddress, $Port)
Local $iError = 0

If @error Then
   $iError = @error
   GUICtrlSetData($idST, "ERROR"&$iError)
   TCPCloseSocket($iSocket)
   Return
Else
   GUICtrlSetData($idST, "OK")
EndIf

While 1
TCPSend($iSocket, "DATA IS: "&$ClientData)

If @error Then
   $iError = @error
   GUICtrlSetData($idST, "ERROR"&$iError)
   TCPCloseSocket($iSocket)
   Return
Else
   GUICtrlSetData($idST, "OK")
EndIf

sleep (1000)
$ClientData = $ClientData + 1
GUICtrlSetData($idCLN, $ClientData)
WEnd

EndFunc

; ====================================================================================================================
; Функции системных событий.
; ====================================================================================================================
Func _CLOSEEvent()
   TCPShutdown() ; Остановить службу TCP.
   Exit
EndFunc


Сервер:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>

Opt("GUIOnEventMode", 1) ; Включить режим отслеживания событий GUI.
Opt("TrayIconHide", 1)

Global $IPAddress = "127.0.0.1" ; This IP Address only works for testing on your own computer.
Global $Port = 53555 ; Port used for the connection.

; ====================================================================================================================
; Создаем визуальное окно и объекты в нем.
; ====================================================================================================================

; Создать визуальное окно.
$WINGUI = GUICreate("TEST", 470, 245, -1, -1)

; Информауионные строки.
$lbCLN1 = GUICtrlCreateLabel("DATA_CLIENT1:", 10, 10, 100, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)
$lbCLN2 = GUICtrlCreateLabel("DATA_CLIENT2:", 10, 25, 100, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)
$lbCLN3 = GUICtrlCreateLabel("DATA_CLIENT3:", 10, 40, 100, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)
$lbCLN4 = GUICtrlCreateLabel("DATA_CLIENT4:", 10, 55, 100, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)

$idCLN1 = GUICtrlCreateLabel("0", 105, 10, 65, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)
$idCLN2 = GUICtrlCreateLabel("0", 105, 25, 65, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)
$idCLN3 = GUICtrlCreateLabel("0", 105, 40, 65, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)
$idCLN4 = GUICtrlCreateLabel("0", 105, 55, 65, 15, $SS_LEFTNOWORDWRAP, $GUI_WS_EX_PARENTDRAG)

; Системные события.
GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSEEvent")
GUISetState(@SW_SHOW, $WINGUI)

Local $STTCP = TCPStartup() ; Запускаем службу TCP.
If $STTCP <> 1 Then
   MsgBox(1, "Статус запуска сервера TCP", "Ошибка запуска службы TCP!")
EndIf

While 1                  ; Если соединение было разорванно, попробовать снова через 1 секунду.
   _STARTSERVER()
   Sleep(1000)
WEnd

; ====================================================================================================================
; Сервер TCP.
; ====================================================================================================================

Func _STARTSERVER()

; Assign a Local variable the socket and bind to the IP Address and Port specified with a maximum of 10 pending connexions.
Local $iListenSocket = TCPListen($IPAddress, $Port, 10)
Local $iError = 0

If @error Then
   $iError = @error
   TCPCloseSocket($iListenSocket)
   Return
EndIf

; Assign a Local variable to be used by the Client socket.
Local $iSocket = 0

Do ; Wait for someone to connect (Unlimited).
   ; Accept incomming connexions if present (Socket to close when finished; one socket per client).
   $iSocket = TCPAccept($iListenSocket)
   ; If an error occurred display the error code and return False.
   If @error Then
	  $iError = @error
	  TCPCloseSocket($iListenSocket)
   Return
   EndIf
Until $iSocket <> -1 ;if different from -1 a client is connected.

; Close the Listening socket to allow afterward binds.
TCPCloseSocket($iListenSocket)

While 1
; Assign a Local variable the data received.
Local $sReceived = ""
Do
   $sReceived = TCPRecv($iSocket, 2048)
      If @error Then
		 $iError = @error
		 TCPCloseSocket($iListenSocket)
		 TCPCloseSocket($iSocket)
		 Return
	  EndIf
Until $sReceived <> ""

GUICtrlSetData($idCLN1, $sReceived)
WEnd

EndFunc

; ====================================================================================================================
; Функции системных событий.
; ====================================================================================================================
Func _CLOSEEvent()
   TCPShutdown() ; Остановить службу TCP.
   Exit
EndFunc


Подскажите пожалуйста, как можно организовать связь сервер+несколько клиентов?
 
Верх