|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.03.2015, 15:22 | #1 |
Новичок
Джуниор
Регистрация: 28.03.2015
Сообщений: 3
|
Клиент-сервер C++
"При запуске нескольких экземпляров клиента, каждый экземпляр должен получить данные".
Можете, пожалуйста, объяснить как именно я должен это обеспечивать? Нужна ли тут многопоточность? Я использую сокеты. Для клиента создаю сокет и для сервера. Последний раз редактировалось ladari; 28.03.2015 в 15:30. |
28.03.2015, 15:31 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Стоп-стоп-стоп.
Ты читаешь книгу, ты про сокеты блокирующие и неблокирующие прочитал? Многопоток нужен для блокирующих сокетов, хотя как правило многопоток делают везде, чтоб много подключений обрабатывал. И порты тут ни при чем - все подключения могут идти через один порт. Функция accept() возвращает сокет очередного подключения, и вот тут то можно стартовать поток, передавая ему этот сокет для работы с ним. После чего основная программа продолжает прослушивать порт, пока не сработает очередной accept().
I'm learning to live...
|
28.03.2015, 16:06 | #3 | |
Новичок
Джуниор
Регистрация: 28.03.2015
Сообщений: 3
|
Цитата:
В задание, которое нужно выполнить не стоит условие блокирующие или нет сокеты. Там только написано, что при соединении каждый клиент должен получить все данные. Поэтому я немного растерялся. Я так понял, что у меня должно быть два разных проекта. Один для сервера и один для клиента. А можно еще один вопрос? Мне нужно отследить изминения в папке на диске. Тоесть, клиент подключается к серверу и если в папке были изминения, то он должен ему сообщить. Я нашел метод FindFirstChangeNotification. Просто я никак не пойму. Изминения я должен учитывать в то время, когда запускается exe сервера? А что если эту папку кто-то изменит, когда сервер не будет запущен? Я только начинаю разбираться с клиент-сервером, поэтому пока не до конца все понимаю. |
|
28.03.2015, 16:19 | #4 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
28.03.2015, 16:23 | #5 | ||
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Цитата:
В любом случае никакой FindFirstChangeNotification тебе не поможет. Тебе надо запоминать состояние файлов в каталоге и периодически сверять текущее состояние с сохраненным. Я бы создал таблицу типа "имя файла, хеш файла" и сверял с ней. Статьи по теме (для работы с потоками и сетью используется библиотека Qt) : Работа с сетью. Клиент-сервер. - описаны классы для работы с сетью, при этом сервер работает в одном потоке. Многопоточный сервер - описана работа с потоками и очень удобная обертка над сокетами (с шаблоном "декоратор"). Где-то там же была статья про работу с базами данных была (удобно использовать для хранения хешей файлов между запусками программы какой-нибудь SQLite) |
||
28.03.2015, 16:33 | #6 | |
Новичок
Джуниор
Регистрация: 28.03.2015
Сообщений: 3
|
Цитата:
За идею про изминения в файлах спасибо. Но, там нужно запоминать любые изминения в папке. А если изменится имя файла или файл вообще удалится. Значит, тогда нужно имена еще запоминать. А в FindFirstChangeNotification есть параметры - FILE_NOTIFY_CHANGE_FILE_NAME и т.д. Но все равно Ваша идея правильнее, так как у меня не получалось контролировать изминения, когда exe не запущен. Спасибо. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как отправить видео захват(с веб-Кам.) Клиент->Сервер->Клиент | RODNOC | Мультимедиа в Delphi | 17 | 03.10.2010 22:31 |
Клиент->Сервер->Клиент | RODNOC | Работа с сетью в Delphi | 0 | 25.09.2010 11:49 |
сервер+клиент+клиент на телефон | Razyiller | Работа с сетью в Delphi | 3 | 01.04.2010 20:10 |
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? | Demol | Работа с сетью в Delphi | 1 | 21.04.2009 16:18 |