Что нового

Как создать подключение к удаленной файловой системе?

ice99

Новичок
Сообщения
4
Репутация
0
Задача такова:
На машине№1 запускается сервер.
Машина №2 по интернету коннектится к машине №1 и браузит список файлов, с возможностью их загрузки.

Машина №1 находится за роутером. (нужен no-ip.com?&&&)

Подскажите алгоритм решения данной задачи.
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Простой способ:
Поднимайте FTP сервер.
Для скачивания и просмотра FTp-папок в AutoIt см. функции _FTP...

Сложный способ:
Сервер слушает какой-то порт, к которому подключается клиент.
Клиент дает команду "c:\files".
Сервер просматривает эту директорию через:
Код:
#include <Array.au3>
#include <File.au3>
Dim $a[1]
_ArrayAddFileListSubDir($a, 'c:\files')
_ArrayDisplay($a)

; построение файл-листа для папки - автор Amel27
Func _ArrayAddFileListSubDir(ByRef $aGDir, $sPath)
	Local $i = UBound($aGDir), $aLDir = _FileListToArray($sPath, '*')
	_ArrayAddFileList($aGDir, $sPath)
	While $i < UBound($aGDir)
		_ArrayAddFileList($aGDir, $aGDir[$i])
		$i += 1
	WEnd
EndFunc   ;==>_ArrayAddFileListSubDir

Func _ArrayAddFileList(ByRef $aGDir, $sPath)
	Local $i, $aLDir = _FileListToArray($sPath, '*')
	If UBound($aGDir, 0) = 1 And UBound($aLDir, 0) = 1 Then
		For $i = 1 To $aLDir[0]
			_ArrayAdd($aGDir, $sPath & '\' & $aLDir[$i])
		Next
	EndIf
EndFunc   ;==>_ArrayAddFileList

Выдает этот список клиенту.
Клиент посылает строку с запросом конкретного файла и открывает у себя порт для его приема (функции TCP...)
Сервер шлет файл клиенту TCPSend
 
Автор
I

ice99

Новичок
Сообщения
4
Репутация
0
Простой способ:
Поднимайте FTP сервер.
Для скачивания и просмотра FTp-папок в AutoIt см. функции _FTP...

Спасибо за ответ.
Немножко не понял "поднимайте ftp-сервер" имеется в виду через стороннюю утилиту или средствами AutoIt?
Сторонние ftp-сервера я нашел. ставил, конектился, всё ок. Но я думал ftp можно поднять средствами AutoIt.
С задачами "закачать файл на фтп", "подсоедениться к фтп" я нашел примеры, но вот "фтп-сервер на Autoit" пока не видел

с _FTP я уже ковыряюсь. Пока я не нашел ничего лучше, как
1. сервер закачивает список файлов на фтп
2. Сервер слушает на фтп-сервере текстовый файл, с именем файла, который надо загрузить на фтп.
Клиент
1. Получает список файлов с фтп
2. Закачивает на фтп в текстовом файле имя файла, который серверу нужно послать на фтп

Нормальный способ или "через одно место"?
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Да, FTP-серверов на AutoIt я не видел (только http)

На обычном FTP сервере AutoIt и не нужен вовсе, все что нужно - это клиентом подключиться к серверу через _FTP_Connect и получить список директорий/файлов, а затем самому выбрать что качать через _FTP_FileGet или куда класть файл через _FTP_FilePut

Поиском выдает много тем по FTP вот, например, удачи!
 
Автор
I

ice99

Новичок
Сообщения
4
Репутация
0
клиентом подключиться к серверу через _FTP_Connect
Пробую. Получается. На тестовых подключениях внутри сети. Список файлов тоже получается получить, но проблема следующая.

Сервер находится за роутером и имеет адрес "192.169.0.6" (т.е. это локалка).
Клиент тоже находится в локалке, но другой.
IP локалок наперёд неизвестны.

Как реализовать такое соединение? (Ну, принцип teaviewer-а то все знают. "через третью точку соединяем что угодно")
Подозреваю, что нужна третья точка. Например, сервер слушает адрес "address.no-ip.biz" а клиент посылает команды на "address.no-ip.biz".
Я на правильном пути, или сервис no-ip никак не поможет мне в соединении 2х компов в разных локалках?
Варианты Хамачи и прочее дополнительное ПО на сервере я не рассматриваю.
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
ice99 [?]
Например, сервер слушает адрес "address.no-ip.biz" а клиент посылает команды на "address.no-ip.biz".

Здесь я мало чем помогу, т.к. сам не сталкивался.
Вам надо искать все про проброс портов на роутерах и настройку этого.

Или поищите что-нибуть про настройку NAT
 
Автор
I

ice99

Новичок
Сообщения
4
Репутация
0
Спасибо за ответ.
Вам надо искать все про проброс портов на роутерах и настройку этого.Или поищите что-нибуть про настройку NAT
Пробовал. Зарегился на no-ip. Получил домен "domen.no-ip.com"
Поднял даже на нём ФТП сервер. (т.е. сделал сервер на локальной машине, с помощью форвардинга портов и подключению к no-ip в настройках роутера, и теперь любой может подключиться к нему через domen.no-ip.com). Но, пока не понимаю как это может помочь. Идея в том, что всё должно работать без шаманства с сервером\файерволом на стороне клиента (т.е. как бы сервера). т.е. человека, которому оказывают поддержку. А если он чайник и не может сообразить что есть НАТ и форвардинг. Еще раз повторюсь, ориентир функциональности - Teamviewer. Хотя, там даже избыточная для меня функциональность. Достаточно просто трансфера файлов.
 
Верх