Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тестер соединения по LAN, Есть вопросы 
:(
    Опции темы
Johen
  Дата 11.5.2005, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.5.2004
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Нужна помощь.
Было заказано сделать тестер соединения по сети типа LAN.

От проги требуется реализовать 4-х ступенчатую проверку соединения между двумя компами. Соответственно, один из них - сервер, другой - клиент.

Должно быть произведено 4 теста:

1. Файл-файл
2. Файл-буфер
3. Буфер-файл
4. Буфер-буфер

Каждый из тестов - в обе стороны, т.е. клиент->сервер и обратно.

Для проведения тестов будут сгенерированны энное число тестовых файлов разного размера.

Пример первого теста. Нужно выяснить скорость соединения клиент->сервер и обратно допустим при передаче 20 мегабайтового файла. Здесь все просто: фиксируем время начала теста, копируем с клиент-машины на сервер-машину в заранее расшаренный каталог этот файл, фиксируем время окончания теста, делим размер файла на прошедшее время и получаем искомый результат. Здесь появляется первая проблема. Все тесты с использованием файлов должны быть 3-х типов: передача по IP (\\192.168.0.1\check), по NetBIOS-имени (\\TESTSERV\check) и по dns (\\test.serv\check). Как получить, используя WinAPI, NetBIOS имя с WINS-сервера по IP?

Да и еще. Тест файл-файл как и остальные тесты проводиться в обе стороны. Допустим, я сначала копирую файл с клиентской машины на машину-сервер, а потом заставляю сервак кинуть этот файл обратно на мою машину. Или еще проще: делаю в направлении клиент-сервер подряд три теста типа файл-файл, используя разные типы адресации, указанные выше. Используется один тестовый файл. Вот здесь встает одна, но очень большая проблема - системное файловое кеширование. Как обойти ее?

Вообще программа-тестер состоит из клиента и сервера. Сервер устанавливается в виде сервиса на тестируемую машину (например на файл-сервер). Перед началом тестов происходит соединение через сокеты клиента и сервера. Эта система (клиент-сервер) нужна для реализации тестов с использованием буферов. В этих типах тестов должны быть реализованы две передачи данных: блочная передача и поток. Блочная передача понятна: функция send(). А вот как реализуется поток? Я что-то слышал про HANDLE, вот только что это и с чем его едят (т.е. как прикрутить к сокетам)?

P.S. И еще один маленький вопрос. Вроде в сокетах есть функция передачи файла... Что это за функция и как ей пользоваться?

Это сообщение отредактировал(а) Johen - 11.5.2005, 12:52
PM MAIL ICQ   Вверх
knave
Дата 11.5.2005, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: 1
Всего: 5



Я так понимаю работаь тестилка должна только в локалке? Ели да, то CreateFile откроет тебе файл по любому из возможных вариацим имен в локалке. Ну а там дело техники, можно читаь из одного писать в другой, либо использовать CopyFile.

1. Файл-файл - Можно просто CopyFile или руками, из одного читаеш в другой пишеш через CreateFile, ReadFile, WriteFile
2. Файл-буфер - чтение удаленного файла, CreateFile, ReadFile
3. Буфер-файл - запись удаленного файла CreateFile, WriteFile
4. Буфер-буфер - CreateNamedPipe на клиенте и сервере, затем на одном конце пишеш блок в канал, WriteFile, на другом читаеш из канала ReadFile и пишеш в память.

Если же тебе надо все сделать через сокеты, руками, тогда файлы будут локальными (для клиента и сервера) и надобности в именах сетевых ресурсов нет. Законектился к сереву по IP (или получил его через gethostbyname() через имя, интернет или локалки одинаково). Ну и читай файл в буфер и пиши из буфера в сокет, на том конце из сокета читай в буфер а из него пиши в файл. По сути Буфер-буфер, это частный случай файл - файл.

Насчет потока неясно, поток это вообще абстрактное понятие и описанный выше способ пердачи тоже можно считать потоком.

Вообще никаких копироволок файлов в СОКЕТАХ нет и быть не может. CreateFile и все остальные API функции кторые могут передавать даные между компами в локалке используют сокеты. У XP есть сервис СЕРВЕР - елси его вырубить то с локалкой кроме как через сокеты работь не сможеш. Это он занимается пересылкой всех данных между компами при использовании RPC, каналов и функций кторые могут передавать данные на удаленный комп в локалке или интернете (через VPN например). Скеты при этом работаь будут, так как каждое приложение кторое использует сокеты само является сервером или колиентом.

Это сообщение отредактировал(а) knave - 11.5.2005, 18:19


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
Plamenk
Дата 12.5.2005, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 18.2.2003

Репутация: нет
Всего: 3



Мне кажется, что от программы требуется просто тестировать разные способы передачи по IP - использовать Socket,
по NetBIOS - соответственно NetBIOS, а по dns (\\test.serv\check) - WinInet, т.е. HTTP.

Хотя я могу ошибаться. smile
PM MAIL   Вверх
Johen
Дата 12.5.2005, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.5.2004
Где: Санкт-Петербург

Репутация: нет
Всего: нет



2knave:
Это все так. Большая часть именно так и будет реализована.

2Plamenk:
Ты не прав. От программы требуется тестировать способы передачи данных, которые использует система во время своих рутинных операций. Во всех возможных вариациях. Причина, из-за которой я должен проводить тесты по трем типам адресов - проверка скорости получения IP-адреса машины (удаленной) по сравнению с его явным указанием (\\192.168.0.1\check).

Открытые вопросы:
1. Как обойти кеширование файлов системой?
2. Как получить NetBIOS имя машины по ее IP, используя WINS-сервер?
PM MAIL ICQ   Вверх
Johen
Дата 12.5.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.5.2004
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата
Вообще никаких копироволок файлов в СОКЕТАХ нет и быть не может.


А как насчет функции TransmitFile из Winsock2 ?
PM MAIL ICQ   Вверх
knave
Дата 12.5.2005, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: 1
Всего: 5



Цитата
А как насчет функции TransmitFile из Winsock2 ?

Да это неболее чем обертка для send и recv. Хотя можо и через нее посылать.

имя по IP gethostbyaddr()
IP по имени gethostbyname()
gethostname() имя текущей машины.

Это сообщение отредактировал(а) knave - 12.5.2005, 15:06


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
Johen
Дата 12.5.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.5.2004
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Но gethostbyaddr() возвращает dns-имя... Или я не прав?
PM MAIL ICQ   Вверх
Plamenk
Дата 13.5.2005, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 18.2.2003

Репутация: нет
Всего: 3



Получение NetBIOS имени см. здесь.
PM MAIL   Вверх
Johen
Дата 13.5.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.5.2004
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Данные статьи не подходят. smile Там описан способ получения NetBIOS-имени только своего компа, а нужно любого в сети, причем обращатся надо именно к WINS серверу. Обращение по IP к искомой машине и вытаскивание с нее имени также не подходит.
PM MAIL ICQ   Вверх
Coocky
Дата 14.5.2005, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Тебе тоьлко АПИ или МФС можно?


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
knave
Дата 16.5.2005, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: 1
Всего: 5



А я вообще непонимаю, зачем так цепляться к разным именам если в конечном итоге перед тем ка установитьсоеденение все имена преобразуются в IP. Полчил IP и тестируй себе скорость. Разве что для того что бы сравнить скорость получения имени от днс и нетбиоса???

Это сообщение отредактировал(а) knave - 16.5.2005, 13:46


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
Johen
Дата 20.5.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.5.2004
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Именно. Еще надо оттестировать скорость получения имен.

2Coocky: только АПИ.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.