Приветствую Вас Гость
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Страница 1 из 11
Модератор форума: Bizunow, Romixal 
Форум » Вопросы и проблемы » Проблема - решение » Проблема с отправкой через буфер (Не получается отправлять через буфер)
Проблема с отправкой через буфер
_RdДата: Суббота, 01.09.2012, 14:24 | Сообщение # 1
Пишет что-то
Группа: Пользователи
Сообщений: 12
Статус: Offline
Так, начну сразу, так сказать в лоб:
Я только начал изучать 39dll и столкнулся с проблемой(Это даже не проблема, просто не получается)
И так Мне, к примеру надо чтобы у игрока в клиенте отображало... например название сервера.
С серверной частью вроде всё в порядке(ошибок нет)
Но клиент не хочет рисовать (draw_text) то значение что я ему посылаю
Он рисует то что написано в Create
Вот код:
nameservmess = dll39_message_receive(client,0,11)
if nameservmess > 0 {
nameserv = dll39_read_byte(11)
}

Использую 11 буфер Это просто для проверки.

Ps. Надеюсь я полностью объяснил суть моего вопроса



 
zxc76Дата: Суббота, 01.09.2012, 15:22 | Сообщение # 2
Генерал-полковник
Группа: Администраторы
Сообщений: 845
Статус: Offline
Quote (_Rd)
Ps. Надеюсь я полностью объяснил суть моего вопроса

Вообще отлично)))

dll39_message_receive показывает, сколько байт пришло от сервера) и если больше 0, то надо считывать, в этом плане всё верно))) толька буфер лучше исользовать 0, что бы всё было по умолчанию)

dll39_read_byte- считывает отправленный с другой стороны (сервером) байт. Один байт может иметь значение 0-255, но не как не название сервера))))

dll39_read_string - считывает текст, отправленый с другой стороны))

Через dll39_read_byte толька цифру передашь, а dll39_read_string может передать текст, или название сервера)


 
_RdДата: Суббота, 01.09.2012, 15:48 | Сообщение # 3
Пишет что-то
Группа: Пользователи
Сообщений: 12
Статус: Offline
Quote (zxc76)
dll39_message_receive показывает, сколько байт пришло от сервера) и если больше 0, то надо считывать, в этом плане всё верно))) толька буфер лучше исользовать 0, что бы всё было по умолчанию)

Он уже занят.
Quote (zxc76)
Через dll39_read_byte толька цифру передашь, а dll39_read_string может передать текст, или название сервера)

А тут можно поподробнее?
Как я понял должен быть код, что то типо:
nameservmess = dll39_message_receive(client,0,11)
if nameservmess > 0 {
nameserv = dll39_read_string(ServerName)
}

А со стороны сервера:

dll39_buffer_clear(11)
dll39_write_string(nameserver,11)
dll39_message_send(newuser,0,0,11)



 
zxc76Дата: Суббота, 01.09.2012, 15:55 | Сообщение # 4
Генерал-полковник
Группа: Администраторы
Сообщений: 845
Статус: Offline
nameservmess = dll39_message_receive(client,0,11)
if nameservmess > 0 {
nameserv = dll39_read_string(11); //здесь буфер))
}

А со стороны сервера всё верно)

Вот толька не всегда write_string работает почему-то. Иногда просто не хочет передовать сообщение, у кого как)

Ну как результаты?)


 
_RdДата: Суббота, 01.09.2012, 16:20 | Сообщение # 5
Пишет что-то
Группа: Пользователи
Сообщений: 12
Статус: Offline
Так сейчас проверю, отпишу

Добавлено (01.09.2012, 16:14)
---------------------------------------------
Такс, не хочет...

Добавлено (01.09.2012, 16:20)
---------------------------------------------
ИСХОДНИК Вот исходник, посмотри пожалуйста ^_^





Сообщение отредактировал _Rd - Суббота, 01.09.2012, 16:21
 
zxc76Дата: Суббота, 01.09.2012, 16:22 | Сообщение # 6
Генерал-полковник
Группа: Администраторы
Сообщений: 845
Статус: Offline
А что не так? Попробуй проверить, вообще может ли что-то отправится принятся? Поставь сново dll39_read_byte(и врайт), и проверь, будет ли просто цифра отправлятся, если будет, значит дело в dll39_read_string(или врайт). Он иногда не передает почему-то. Есть альтернатива:
http:9dll.ru/publ....-1-0-13 вот в этой статье)



Замена функции dll39_read_string(и врайт)


 
_RdДата: Суббота, 01.09.2012, 16:37 | Сообщение # 7
Пишет что-то
Группа: Пользователи
Сообщений: 12
Статус: Offline
Так, попозже приду, буду пытаться


 
zxc76Дата: Суббота, 01.09.2012, 16:55 | Сообщение # 8
Генерал-полковник
Группа: Администраторы
Сообщений: 845
Статус: Offline
Ну для начала- сервер всё время отправляет своё название, даже когда не кто не подключен)))
Нужно что бы он отправлял толька при подключении, то есть: внутрь
if newuser
{

То есть, отправил серв newuser_id, следом сразу название серва.



В клиенте:
idmess и nameserv, отличаются номерами буфера. Но номер буфера то не передается же))) dll39_message_receive должен быть один, на одно подключения. А буфер нужен толька для удобства, внутри программы)

По этому, nameserv и ид, нужно под один dll39_message_receive запихать, вот так:
idmess = dll39_message_receive(client,0,0)
if idmess > 0 {
myID = dll39_read_byte(0);
nameserv = dll39_read_string(0);
}

Всё это сделай, и будет передоватся))) Может я где-то что-то забыл написать, но пусть будет сюрприз тогда xD


 
_RdДата: Суббота, 01.09.2012, 20:44 | Сообщение # 9
Пишет что-то
Группа: Пользователи
Сообщений: 12
Статус: Offline
Да, всё заработало.
Спасибо



 
Форум » Вопросы и проблемы » Проблема - решение » Проблема с отправкой через буфер (Не получается отправлять через буфер)
Страница 1 из 11
Поиск:
Хостинг от uCoz