powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Файл-сервер на winsock
10 сообщений из 10, страница 1 из 1
Файл-сервер на winsock
    #36213610
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожалуйста, кто сталкивался с этим.
Есть программа "сервер" которая по запросу от клиента генерирут файл и отправляет его обратно клиенту.
Но проблема в том что клиентов единовременно может быть больше одного.
Многопользовательский Winsock на сервере сделан по подобию описания MSDN:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub tcpServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)

If Index =  0  Then
        intMax = intMax +  1 
        Load tcpServer(intMax)
        tcpServer(intMax).LocalPort =  0 
        tcpServer(intMax).Accept requestID
end if
Подскажите пожалуйста правильный алгоритм как отправить данные именно тому пользователю который запросил файл и как на клиенте определять что данные пришли именно этому клиенту.
Щас пытаюсь сделать примерно так: передаю данные с сервера на клиент пакетами по 2048 байт, пакет выглядит примерно так: ip_клиента<>данные, на клиенте смотрю мой ли ip_адрес и если мой то записываю в буфер.
Но чегото запутался, какае то каша получается.
Натолкните на правильный путь.
...
Рейтинг: 0 / 0
Файл-сервер на winsock
    #36213717
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жуть какая. То есть если у тебя сейчас сто клиентов, ты всем ста отправляешь сто разных(?) файлов? А уж клиент думает который из ста надо сохранить?

Лучше всего заглянуть в исходники любого http- или чат- сервера.
Обычно, сервер на каждого пришедшего клиента открывает отдельный поток. Этот поток знает только про один сокет и только с ним и работает. Как потоки между собой общаются это уже дело другое (а для файл-сервера вообще не нужное).
Контроль за качеством пересылки обычно делается так: клиент запрашивает файл, сервер сообщает информацию о файле и пихает его в туннель, по окончанию посылки сервер в течении некоторого времени ждет а потом пишет в лог - пришло от клиента сообщение о приеме или нет.
...
Рейтинг: 0 / 0
Файл-сервер на winsock
    #36214787
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с отправкой файлов нужному клиенту разобрался.
проблема теперь в том, что пока генерится и пересылается файл(размером до ~30 Мб) для первого клиента запрос от второго клиента не обрабатывается.
Сдесь бы наверное потоки самый раз наверное, а с потоками в VB все плохо.
...
Рейтинг: 0 / 0
Файл-сервер на winsock
    #36215362
Вариант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через одно место конечно, но можно обойтись без потоков

Клиент --- (запрос файла)-----> сервер --(запуск через shell)--->программа создания файлов
                                                                                                                              |
Клиент <---(передача файла)<-- сервер <--(ответ серверу о создании файла)<-- создание файла

Ответ от программы серверу может реализован через сокет.
...
Рейтинг: 0 / 0
Файл-сервер на winsock
    #36216013
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВариантЧерез одно место конечно, но можно обойтись без потоков

Клиент --- (запрос файла)-----> сервер --(запуск через shell)--->программа создания файлов
                                                                                                                              |
Клиент <---(передача файла)<-- сервер <--(ответ серверу о создании файла)<-- создание файла

Ответ от программы серверу может реализован через сокет.
Спасибо, но этот вариант не подойдет. "программа создания файлов" - ресурсоёмкая, 5 запущенных экземпляров одновременно затормозят систему насмерть. Смотю в сторону C++.
...
Рейтинг: 0 / 0
Файл-сервер на winsock
    #36216266
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем не устраивает обычный http сервер с cgi?
Тот же apach или IIS.
Кладешь куда-нибудь "на веб" свою генерилку файлов а клиентам прописываешь:
1) подключиться на 80-ый порт
2) послать GET /super-secret-path/make-new-file.exe?param1&param2
3) получить файл
4) отвалить.
...
Рейтинг: 0 / 0
Файл-сервер на winsock
    #36216456
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА чем не устраивает обычный http сервер с cgi?
Тот же apach или IIS.
Кладешь куда-нибудь "на веб" свою генерилку файлов а клиентам прописываешь:
1) подключиться на 80-ый порт
2) послать GET /super-secret-path/make-new-file.exe?param1¶m2
3) получить файл
4) отвалить.
Спасибо за совет, но это, помоему, опять получается, что для каждого клиента запускается экземпляр программы. Или я не прав?
...
Рейтинг: 0 / 0
Файл-сервер на winsock
    #36216491
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

вы о каком экземпляре программы говорите ?
на клиенте будет вызываться запрос типа " /super-secret-path/make-new-file.exe?param1=m2" и все.
...
Рейтинг: 0 / 0
Файл-сервер на winsock
    #36216498
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понял. FastCGI нужен. Не сталкивался с этим. Попробую разобраться.
...
Рейтинг: 0 / 0
Файл-сервер на winsock
    #36218055
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimСпасибо за совет, но это, помоему, опять получается, что для каждого клиента запускается экземпляр программы. Или я не прав?Если ты имеешь в виду что для каждого клиента будет запускаться генератор файлов, то да, прав. С другой стороны не обязательно наверное генерировать файл каждый раз с нуля, их же наверное можно кешировать? Проверить а не запрашивал ли кто-либо такой файл, если запрашивал, посмотреть в архиве уже готовый файл и отдать его, если такого нету - создать новый, положить в архив и отдать из архива.
Впрочем и FastCGI тоже может помочь...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Файл-сервер на winsock
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]