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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Порт завершения, Сетевое программирование в среде Windows 
:(
    Опции темы
vikaz
Дата 8.1.2009, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет! Нужна ваша помощь.
не могу разобраться с несколькими вещами:
1. Как передать собственную структуру через WSASend  и получить на другом конце при помощи WSARecv?
2. Как используя технологию порта завершения вклинить передачу файлов?


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Lazin
Дата 8.1.2009, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(vikaz @  8.1.2009,  09:08 Найти цитируемый пост)
2. Как используя технологию порта завершения вклинить передачу файлов? 

что значит "вклинить"?
Цитата(vikaz @  8.1.2009,  09:08 Найти цитируемый пост)
1. Как передать собственную структуру через WSASend  и получить на другом конце при помощи WSARecv?

этот вопрос подразумевает пересказ книги по сетевому программированию, можно конкретней?
PM MAIL Skype GTalk   Вверх
vikaz
Дата 8.1.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Давай подробнее!
1. Есть несколько команд для передачи, send и  WSASend.  как передать при помощи команды Send я знаю. У команды WSASend есть так называемый WSABUF у которого только два параметра buf и len. Мне надо передавать более сложную структуру, но как это сделать незнаю. 
2. Смотрел множество примеров как передавать файл по сети, от простого чтения кусками и отправки командой send или WSASend, до использования команды TransmitFile. Хочется использовать TransmitFile, но не могу понять как его можно совместно использовать с портом завершения. 
Раньше я делал так, отправлял структуру с данными о файле, а потом сразу в цикле или через отдельный поток передавал файл. На другой стороне сначала ловил структуру, после чего в цикле ловил поступающие файлы. Но это простая реализация. Вот как примерный алгоритм реализовать в порте завершения ума не приложу.
Вот и прошу помощи, чтобы Вы мне хотябы на пальцах рассказали как это сделать. 
Заранее спасибо!



--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Lazin
Дата 8.1.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(vikaz @  8.1.2009,  13:37 Найти цитируемый пост)
Хочется использовать TransmitFile, но не могу понять как его можно совместно использовать с портом завершения. 

эта функция принимает LPOVERLAPPED, так-что можно использовать, а для чего тебе порт завершения?

Цитата(vikaz @  8.1.2009,  13:37 Найти цитируемый пост)
Раньше я делал так, отправлял структуру с данными о файле, а потом сразу в цикле или через отдельный поток передавал файл. На другой стороне сначала ловил структуру, после чего в цикле ловил поступающие файлы

точно так-же нужно будет передать структуру с данными о файле, только нужно будет связать с сокетом порт завершения а так-же передать в ф-ю WriteFile(или WSASend) структуру OVERLAPPED. Как только на порт завершения придет пакет завершения, тебе нужно будет передать файл с помощью ф-ии WriteFile(или WSASend) новую структуру OVERLAPPED и тд...
PM MAIL Skype GTalk   Вверх
vikaz
Дата 9.1.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Использую порт завершения, так как сервер должен обрабатывать примерно 1000 одновременно подключенных абонентов.  


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Lazin
Дата 9.1.2009, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



попробуй для начала разобраться с портами завершения в более простом случае, например реализуй чтение и запись файлов, в общем это не тот механизм который я могу описть в одном посте на форуме. В принципе там все просто, нужно создать порт завершения, затем связать хэндл с этим портом завершения, например хэндл файла, при этом с этим хэндлом связывается произвольная структура данных, completion key. Для каждого файла или сокета создается свой completion key. Далее ты можешь начать операцию ввода вывода, например вызвав ф-ю WriteFile, и передав в нее указатель на структуру OVERLAPPED, которая содержит смещение для операции ввода вывода и указатель на событие(Event). Эта структура своя для каждой операции, с ее помощью можно понять какая именно операция ввода-вывода завершилась. Что-бы передавать какую либо специфическую информацию, с этой структурой обычно поступают так:
Код

struct myOperation : public OVERLAPPED
{
....my data...
};

когда завершается очередная операция ввода вывода, ты можешь получить completion key и структуру overlapped, те информацию позволяющую определить на каком объекте, и что за операция завершилась, с помощью ф-ии GetQueuedCompletionStatus. В общем читай MSDN, статей в интернете то-же много.
PM MAIL Skype GTalk   Вверх
vikaz
Дата 11.1.2009, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Lazin, я почитал данную ссылку http://forum.vingrad.ru/forum/topic-243054.html
и там выяснилось, что boost:asio, использует тоже порт завершения.
Рекомендуешь?
все то что я описывал в нем можно реализовать? прием/отправка сообщений, прием отправка файлов?

Можешь поделиться основными ссылками, как реализовать мои пожелания?

Это сообщение отредактировал(а) vikaz - 11.1.2009, 07:22


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
REZiaMIX
Дата 11.1.2009, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(vikaz @ 11.1.2009,  07:12)
все то что я описывал в нем можно реализовать? прием/отправка сообщений, прием отправка файлов?

Пусть я не Lazin , могу тут ответить - да


--------------------
user posted image
PM MAIL   Вверх
Lazin
Дата 11.1.2009, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



PM MAIL Skype GTalk   Вверх
vikaz
Дата 11.1.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ох, спасибо. БУДУ СМОТРЕТЬ!!!! А насчет безопасности, там все нормально реализовано?


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Lazin
Дата 11.1.2009, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



есть поддержка ssl
PM MAIL Skype GTalk   Вверх
vikaz
Дата 11.1.2009, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



здорово. А инфу по данной компоненте можно найти только по тем сайтам, которые ты сбросил? или по примерам?


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Lazin
Дата 11.1.2009, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



это ссылка на официальную документацию, там есть примеры
PM MAIL Skype GTalk   Вверх
vikaz
Дата 11.1.2009, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ладно, посмотрю, там будет видно, вопросы точно будут. smile 


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 11.1.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Lazin
реализация для Linux что использует?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

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


 




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


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

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