|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.09.2010, 00:54 | #591 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
Цитата:
1. Выбираем получателя 2. Выбираем файл для отправки 3. Получаем данные о файле (имя и размер) 4. Отсылаем на сервер команду на получение файла, в которой содержится: ник получателя, имя файла, размер файла 5. Сервер должен подтвердить команду на принятие файла отослав команду клиенту 6. Клиент приняв команду помещает файл в поток и начиает передачу файла 7. Тоже создаём поток и начнаем принимать файл 8. Завершение принятия файла и высвбождение потоков Оказывается не так-то и просто. Походу много чего напропуска и много чего не нужного понаписал P.S. Начать принимать файл после подтверждения юзером на желание приёма Последний раз редактировалось Shouldercannon; 14.09.2010 в 13:00. |
|
14.09.2010, 16:12 | #592 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
В общем, все так и есть. Техническая сторона требует четкой последовательности. Вот более конкретно (клиент1-сервер-клиент2):
1. Клиент 1 выбирает получателя; 2. Клиент 1 выбирает файл для отправки; 3. Клиент 1 отсылает данные файла на Сервер; 4. Сервер проверяет параметры на существенность; 5. Сервер передает данные файла Клиенту 2, если такой существует в списке; 6. Клиент 2 получает данные о файле (имя и размер), создает поток; 7. Клиент 2 отсылает на Сервер команду готовности получения файла; 8. Сервер проверяет Клиента 2 на подлинность готовности и ожидания принятия файла; 9. Сервер отправляет запрос Клиенту 1 на готовность принятия файла; 10. Клиент 1 создает поток, загружает в него файл и отправляет на Сервер; 11. Сервер принимает поток, по завершении приема сверяет размер; 12. Сервер отправляет поток Клиенту 2; 13. Клиент 2 проверяет размер, отправляет на Сервер подтверждение корректной передачи данных; 14. Клиент 2 приняв поток, сохраняет на диске; 15. Сервер передает подтверждение Клиента 2 об успешной передаче файла Клиенту 1; 16. Клиент 2 освобождает поток; 17. Сервер освобождает поток; 18. Клиент 1 освобождает поток;
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
14.09.2010, 18:41 | #593 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
Попробую сделать
1. Код:
Код:
Код:
5. ServerTimerTimer Код:
Код:
Код:
Код:
Код:
Код:
Код:
13, 14, 15. Придётся обдумывать во время написания 16, 17, 18. Поток.Free; P.S. Сервер тоже сможет принимать файлы? Уведомление о файле будет в привате? Последний раз редактировалось Shouldercannon; 14.09.2010 в 22:57. |
15.09.2010, 15:31 | #594 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
4. Сервер проверяет параметры на существенность
Что будет, если каким-то образом клиент пришлет параметры файла, длина данных в которых равна нулю? ...или не указана вовсе? ...это и есть проверка на существенность. 11. Сервер принимает поток, по завершении приема сверяет размер Это все на OnClientRead, после пункта 9 (Сервер отправляет запрос Клиенту 1 на готовность принятия файла; ) сервер должен создать запись и поток должен быть в записи конкретного клиента. Вспоминаем собственный тип TUserList, там можно создать переменную потока. В событии можно связать с таймером части: поток и клиента, через IP-адрес.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
23.09.2010, 21:48 | #595 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
Столкнулся с ошибкой при очистке чата у всех юзеров
Client Код:
Код:
Так без ошибок Код:
Последний раз редактировалось Shouldercannon; 24.09.2010 в 13:51. |
24.09.2010, 15:59 | #596 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Еще раз конкретнее, что нужно сделать? ...удалено почистить всем пользователям список UserListView?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
25.09.2010, 00:14 | #597 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
Всетаки не углядел и написать про очистку. Была проблема с перезапуском сервера чата для обновления списка юзеров. Делал её через таймер, потом просто
Код:
|
26.09.2010, 19:59 | #598 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
1. Если кто-то один не отчвчает на команду отправки ника, то всё заступоривается и клиенты не могут получить список. С перезапуском чата по таймеру работало на 100%, но с ошибкой. Похоже помимо
Код:
Последний раз редактировалось Shouldercannon; 27.09.2010 в 15:45. |
25.10.2010, 17:25 | #599 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Уже несколько раз говорил, что нужно делать, и в ЛС тоже. Заводим счетчик для клиентов на стороне сервера, чтобы сервер считал время для каждого, если по истечении времени нет ответа от конкретного клиента, отключать его, а всем остальным пойдет новый список уже без "зависшего" пользователя. Счетчик начинает считать таймаут сразу после системных запросов сервера, на которые обязательно нужно получать ответ пользователя, ...нет ответа, ...истекло время ожидания, ...ну, и, собственно, "гуляй Вася", отключаем такого пользователя.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
16.11.2010, 01:30 | #600 |
Пользователь
Регистрация: 03.04.2010
Сообщений: 19
|
помогите с кодом вывода сообщения когда программа находится в свернутом состоянии в трее. Если сообщение приходит то вывести его PopUp я пользуюсь библиотекой CoolTrayIcon
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
обновление в блоге - Создание клиент-сервера | Pblog | Обсуждение статей | 0 | 03.10.2007 17:12 |
обновление в блоге - Диплом. Создание и продвижение сайта - готовь сани летом, а дипл | Pblog | Обсуждение статей | 0 | 31.08.2007 20:00 |
обновление в блоге - USB Холодильник | Pblog | Обсуждение статей | 0 | 25.06.2007 14:13 |
обновление в блоге - О ярлыках | Pblog | Обсуждение статей | 0 | 27.05.2007 03:17 |