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

Поиск:

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


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



vikaz, используй 2009 Борман - в нем boost есть.
PM MAIL   Вверх
vikaz
Дата 12.1.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mrbrooks, спасибо, я это знаю. Я же раньше написал это. smile


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

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


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(vikaz @  12.1.2009,  14:45 Найти цитируемый пост)
Я же раньше написал это. smile 

Точно. Пардон  smile 
PM MAIL   Вверх
vikaz
Дата 15.1.2009, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я все таки решил остановиться на порте завершения, написанного руками.
Вопрос. 
Как отправлять и принимать сообщения, допустим, 300Кб.
Отправка и получение сообщения осуществляется порциями по 1024 байта.
Как отправить от клиент это понятно, просто в цикле. Но вот как принять все это при учете, что одновременно отправляют примерно 1000 клиентов, ума не приложу. Как не запутаться в приеме, кому что принадлежит.....


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

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


Эксперт
****


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

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



Цитата(vikaz @  15.1.2009,  07:13 Найти цитируемый пост)
Отправка и получение сообщения осуществляется порциями по 1024 байта.

можно сразу отправлять 300 кб

Цитата(vikaz @  15.1.2009,  07:13 Найти цитируемый пост)
Но вот как принять все это при учете, что одновременно отправляют примерно 1000 клиентов, ума не приложу. Как не запутаться в приеме, кому что принадлежит..... 

для каждого клиента у тебя будет свой сокет, ты с ним свяжешь разные completion keys а потом просто пишешь демультиплексор, который по completion key завершенной операции определяет какому клиенту принадлежать данные
PM MAIL Skype GTalk   Вверх
vikaz
Дата 15.1.2009, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Lazin, вот уже не в первый раз упоминается completion keys, есть ссылка на описание. А то весь код который я видел, этот параметр не используется.


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

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


Эксперт
****


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

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



Цитата(MSDN)

GetQueuedCompletionStatus

The GetQueuedCompletionStatus function attempts to dequeue an I/O completion packet from the specified I/O completion port. If there is no completion packet queued, the function waits for a pending I/O operation associated with the completion port to complete.


Код

BOOL GetQueuedCompletionStatus(
  HANDLE CompletionPort,
  LPDWORD lpNumberOfBytes,
  PULONG_PTR lpCompletionKey,
  LPOVERLAPPED* lpOverlapped,
  DWORD dwMilliseconds
);


lpCompletionKey 
[out] Pointer to a variable that receives the completion key value associated with the file handle whose I/O operation has completed. A completion key is a per-file key that is specified in a call to CreateIoCompletionPort. 
lpOverlapped 
[out] Pointer to a variable that receives the address of the OVERLAPPED structure that was specified when the completed I/O operation was started. 

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


Опытный
**


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

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



Lazin   у меня к тебе еще вопросик, что это за тип такой: PULONG_PTR?



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

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


Опытный
**


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

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



Цитата(vikaz @ 16.1.2009,  08:00)
Lazin   у меня к тебе еще вопросик, что это за тип такой: PULONG_PTR?

Код

#if defined(_WIN64)
    typedef __int64 INT_PTR, *PINT_PTR;
    typedef unsigned __int64 UINT_PTR, *PUINT_PTR;

    typedef __int64 LONG_PTR, *PLONG_PTR;
    typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;

    #define __int3264   __int64

#else
    typedef _W64 int INT_PTR, *PINT_PTR;
    typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;

    typedef _W64 long LONG_PTR, *PLONG_PTR;
    typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;

    #define __int3264   __int32

#endif


Код

typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;



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


Опытный
**


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

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



REZiaMIX, спасибо. 



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

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


Опытный
**


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

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



Как на сервер можно узнать ip адрес подключаемого абонента?
 


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

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


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

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



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


 




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


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

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