![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#581 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,899
|
![]()
1. Как тогда быть в моём случае? Вот мой код
Код:
Последний раз редактировалось Beermonza; 30.08.2010 в 16:12. |
![]() |
![]() |
![]() |
#582 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
На сервере не должно быть ConnectTimer, его процедуры. Обработка ошибок сервера видоизменяется:
Код:
Как для клиент уже показал выше. Цитата:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
![]() |
![]() |
![]() |
#583 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,899
|
![]()
Прошу прощения, что сразу не написал, что код показал из клиентской части.
Не могу код применить, так как кнопки ClientBtn больше нет, по этому я и спросил как быть в моём случае на клиенте, показав код, но не сказав, что он с клиента. |
![]() |
![]() |
![]() |
#584 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Должна быть хоть какая-то кнопка, которая позволяет подключаться и отключаться не закрывая клиентское приложение. На эту кнопку нужно все настроить.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#585 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,899
|
![]() Цитата:
Вот как выглядит на данный момент событие ClientError на сервере Код:
|
|
![]() |
![]() |
![]() |
#586 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Какой компонент вызывает процедуру? ...запустил программу и сразу соединение с сервером? ...а если я не хочу? ...может мне нужно покопаться в настройках, или почитать историю сообщений, ...ну, много чего может быть. Поэтому всегда есть кнопка в программе, отвечающая за действие, подключение, преобразование, и пр.
Раз уж клиент отдельный, то ничего более делать не нужно с перехватом, пусть остается как есть, без проверки на режим. ClientError событие можно и такое, ...пусть опрашивает всех.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#587 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,899
|
![]()
Решил сделать передачу файлов и ознакомился с #312 и возникли вопросы и трудности.
1. В какой момент на сервере высвобождать NetFile: TMemoryStream? 2. Цитата:
3. Пытался передать архив размером 2.8 Gb в результате чего Out of memory while expanding memory stream. ServerSocket.Socket.Connections[i].SendStream(NetFile); Сокеты не могут передавать файлы очень больших размеров? 4. Пытался передать текстовый файл размером 59 Kb, но случилась снова ошибка List index out of bounds (1). Видимо выбран не существующий канал. |
|
![]() |
![]() |
![]() |
#588 |
Я еще только учусь
Форумчанин
Регистрация: 24.10.2009
Сообщений: 125
|
![]()
Отпраляю буфер с клиента в таймере, по событию нажатия кнопки. Но только почему-то на сервере выскакивает ошибка -
'[]' is not a valid integer. ([] - это такой кракозябный прямоугольник). Это значит, что он принимает не числовые переменные? Но в процедуре то я посылаю массив. Код во вложении. |
![]() |
![]() |
![]() |
#589 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Shouldercannon, любая передача данных между сервером и клиентом это диалог. Существует диалог на системном уровне сокетов - это та часть которая нам не показана. В каждый момент события есть код, по которому сокеты "понимают" что происходит у каждого из них, в каком режиме они находятся, это что-то в роде переговоров по Си-Би: "передал данные, ...как понял?, ...прием", "данные принимаю, режим чтения, ...следующий пакет" , "отправляю пакет, ...как понял?", "данные принял, ...прием." и т.д.
Программа использует протокол, который вы написали самостоятельно. Это более высокий уровень, сокеты не начнут "общаться" на низком уровне без команд собственного протокола. Нужно четко понимать, что любой режим в программе должен быть структурно описан. Берите листок и пишите по порядку пункты, что происходит шаг за шагом, когда нужно передать файл. Напишите сюда, ...посмотрим ход мысли.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#590 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Ckomoroh, нельзя пользоваться параллельно двумя таймерами на проверку содержимого входящего пакета. Даже если с клиента отправлен массив, основной таймер все равно начинает обрабатывать его, длина-то существует. Первая же проверка на тип команды вызывает исключение, поскольку взяв пакет как текст командой Copy невозможно переделать в число (StrToInt) символ, который числом по коду не является. Все значения массива в текстовой форме с кодом, не входящим в диапазон 48 - 57, не могут быть представлены числами, от сюда и "is not a valid integer" - символ не может быть представлен числом.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 13.09.2010 в 18:17. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
обновление в блоге - Создание клиент-сервера | 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 |