Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Файл-сервер на winsock
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, кто сталкивался с этим. Есть программа "сервер" которая по запросу от клиента генерирут файл и отправляет его обратно клиенту. Но проблема в том что клиентов единовременно может быть больше одного. Многопользовательский Winsock на сервере сделан по подобию описания MSDN: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Щас пытаюсь сделать примерно так: передаю данные с сервера на клиент пакетами по 2048 байт, пакет выглядит примерно так: ip_клиента<>данные, на клиенте смотрю мой ли ip_адрес и если мой то записываю в буфер. Но чегото запутался, какае то каша получается. Натолкните на правильный путь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2009, 21:04 |
|
||
|
Файл-сервер на winsock
|
|||
|---|---|---|---|
|
#18+
Жуть какая. То есть если у тебя сейчас сто клиентов, ты всем ста отправляешь сто разных(?) файлов? А уж клиент думает который из ста надо сохранить? Лучше всего заглянуть в исходники любого http- или чат- сервера. Обычно, сервер на каждого пришедшего клиента открывает отдельный поток. Этот поток знает только про один сокет и только с ним и работает. Как потоки между собой общаются это уже дело другое (а для файл-сервера вообще не нужное). Контроль за качеством пересылки обычно делается так: клиент запрашивает файл, сервер сообщает информацию о файле и пихает его в туннель, по окончанию посылки сервер в течении некоторого времени ждет а потом пишет в лог - пришло от клиента сообщение о приеме или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2009, 22:12 |
|
||
|
Файл-сервер на winsock
|
|||
|---|---|---|---|
|
#18+
с отправкой файлов нужному клиенту разобрался. проблема теперь в том, что пока генерится и пересылается файл(размером до ~30 Мб) для первого клиента запрос от второго клиента не обрабатывается. Сдесь бы наверное потоки самый раз наверное, а с потоками в VB все плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2009, 13:17 |
|
||
|
Файл-сервер на winsock
|
|||
|---|---|---|---|
|
#18+
Через одно место конечно, но можно обойтись без потоков Клиент --- (запрос файла)-----> сервер --(запуск через shell)--->программа создания файлов | Клиент <---(передача файла)<-- сервер <--(ответ серверу о создании файла)<-- создание файла Ответ от программы серверу может реализован через сокет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2009, 15:51 |
|
||
|
Файл-сервер на winsock
|
|||
|---|---|---|---|
|
#18+
ВариантЧерез одно место конечно, но можно обойтись без потоков Клиент --- (запрос файла)-----> сервер --(запуск через shell)--->программа создания файлов | Клиент <---(передача файла)<-- сервер <--(ответ серверу о создании файла)<-- создание файла Ответ от программы серверу может реализован через сокет. Спасибо, но этот вариант не подойдет. "программа создания файлов" - ресурсоёмкая, 5 запущенных экземпляров одновременно затормозят систему насмерть. Смотю в сторону C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2009, 20:45 |
|
||
|
Файл-сервер на winsock
|
|||
|---|---|---|---|
|
#18+
А чем не устраивает обычный http сервер с cgi? Тот же apach или IIS. Кладешь куда-нибудь "на веб" свою генерилку файлов а клиентам прописываешь: 1) подключиться на 80-ый порт 2) послать GET /super-secret-path/make-new-file.exe?param1¶m2 3) получить файл 4) отвалить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2009, 01:18 |
|
||
|
Файл-сервер на winsock
|
|||
|---|---|---|---|
|
#18+
White OwlА чем не устраивает обычный http сервер с cgi? Тот же apach или IIS. Кладешь куда-нибудь "на веб" свою генерилку файлов а клиентам прописываешь: 1) подключиться на 80-ый порт 2) послать GET /super-secret-path/make-new-file.exe?param1¶m2 3) получить файл 4) отвалить. Спасибо за совет, но это, помоему, опять получается, что для каждого клиента запускается экземпляр программы. Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2009, 08:55 |
|
||
|
Файл-сервер на winsock
|
|||
|---|---|---|---|
|
#18+
timtim, вы о каком экземпляре программы говорите ? на клиенте будет вызываться запрос типа " /super-secret-path/make-new-file.exe?param1=m2" и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2009, 09:16 |
|
||
|
Файл-сервер на winsock
|
|||
|---|---|---|---|
|
#18+
Я понял. FastCGI нужен. Не сталкивался с этим. Попробую разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2009, 09:19 |
|
||
|
Файл-сервер на winsock
|
|||
|---|---|---|---|
|
#18+
timtimСпасибо за совет, но это, помоему, опять получается, что для каждого клиента запускается экземпляр программы. Или я не прав?Если ты имеешь в виду что для каждого клиента будет запускаться генератор файлов, то да, прав. С другой стороны не обязательно наверное генерировать файл каждый раз с нуля, их же наверное можно кешировать? Проверить а не запрашивал ли кто-либо такой файл, если запрашивал, посмотреть в архиве уже готовый файл и отдать его, если такого нету - создать новый, положить в архив и отдать из архива. Впрочем и FastCGI тоже может помочь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2009, 17:35 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2160557]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 387ms |

| 0 / 0 |
