Что нового

[Сеть, интернет] Передача данными между 2 компьютерами

mmsgeorge

Новичок
Сообщения
96
Репутация
0
Здравствуйте! Нужно организовать передачу файлами(информацией) между 2 компьютерами через интернет, но не представляю даже в какую сторону копать, подскажите пожалуйста, ткните носом, что почитать, можно даже и в общем про передачу информацией через интернет.
Хочу сделать программу, в которой будут выполнятся действия, эти действия должны передаться 2 программе. Но не знаю как реализовать?!
Буду признателен!
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
Нашел такое в хелпе, подойдет ли оно?
Где вообще почитать про передачу данными, так как я пока не понимаю - сокеты и так далее
Код:
#include <GUIConstantsEx.au3>

; Сначала нажмите "1. Запуск сервера", потом запустите копию этого скрипта нажмите "2. Запуск клиента".

Example()

Func Example()
    UDPStartup() ; Запуск UDP служб.

    ; Регистрация функции OnAutoItExit для остановки служб при завершении скрипта.
    OnAutoItExitRegister("OnAutoItExit")

    ; Установка IP-адреса и порта
    Local $sIPAddress = "127.0.0.1" ; Этот IP-адрес работает только для теста на вашем компьютере.
    Local $iPort = 65432 ; Порт, используемый для соединения.

    #region GUI
    Local $hGUI = GUICreate("UDPSend", 150, 85)

    Local $iBtnServer = GUICtrlCreateButton("1. Запуск сервера", 10, 10, 130, 27)

    Local $iBtnClient = GUICtrlCreateButton("2. Запуск клиента", 10, 45, 130, 27)

    GUISetState(@SW_SHOW, $hGUI)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $iBtnClient
                GUISetState(@SW_DISABLE, $hGUI)
                _UDPSend_Client($sIPAddress, $iPort)
                GUISetState(@SW_ENABLE, $hGUI)
            Case $iBtnServer
                GUISetState(@SW_DISABLE, $hGUI)
                _UDPSend_Server($sIPAddress, $iPort)
                GUISetState(@SW_ENABLE, $hGUI)
        EndSwitch

        Sleep(10)
    WEnd

    GUIDelete($hGUI)
    #endregion GUI
EndFunc   ;==>Example

Func _UDPSend_Client($sIPAddress, $iPort)
    ; Подключает прослушивание сокета, указанного IP-адреса и порта.
    Local $iError = @error
    Local $aSocket = UDPOpen($sIPAddress, $iPort)

    If @error Then ; Если ошибка, то выход
        MsgBox(4096 + 16, "", "Клиент:" & @LF & "Не удалось подключиться, @error = " & @error)
        Return False
    EndIf

    ; Высылает строку "tata" серверу.
    UDPSend($aSocket, "tata")

    If @error Then ; Если ошибка, то выход
        MsgBox(4096 + 16, "", "Клиент:" & @LF & "Не удалось выслать данные, @error = " & @error)
        Return False
    EndIf

    UDPCloseSocket($aSocket) ; Закрывает сокет
EndFunc   ;==>_UDPSend_Client

Func _UDPSend_Server($sIPAddress, $iPort)
    ; Создает сокет связанный с указанным IP-адресом и портом
    Local $aSocket = UDPBind($sIPAddress, $iPort)

    If @error Then ; Если ошибка, то выход
        ; Кто-то возможно уже связан с этим IP-адресом и портом (ещё одна копия скрипта уже выполняется?).
        MsgBox(4096 + 16, "", "Сервер:" & @LF & "Не удалось связать, @error = " & @error)
        Return False
    EndIf

    Local $sReceived

    Do
        ; Ожидаем строку "tata" или "toto" (пример скрипта в UDPRecv): 4 байта длиной.
        $sReceived = UDPRecv($aSocket, 4)
    Until $sReceived <> ""

    ; Примечания: Если вы не знаете, какой длины будут данные, то используйте, например 2048 в параметре maxlen и вызывайте функцию UDPRecv, пока не получите ничего или ошибку.

    MsgBox(4096, "", "Сервер:" & @LF & "Получено: " & $sReceived)

    UDPCloseSocket($aSocket) ; Закрывает сокет
EndFunc   ;==>_UDPSend_Server

Func OnAutoItExit()
    UDPShutdown() ; Останавливает UDP службу.
EndFunc   ;==>OnAutoItExit
 
Верх