Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2010, 05:07   #1
kiber_punk
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 16
По умолчанию Mail.ru agent на WinSock (ActiveX)

Пытаюсь реализовать работу с MMP-протоколом через ActiveX-контрол MSWinsck.ocx
После коннекта отправляю HELLO-пакет, но ответа не приходит.
Все константы согласно описанию протокола.
Примерно так, основной кусок (на VB, но не суть):

Код:
CS_MAGIC = &HDEADBEEF
MRIM_CS_HELLO = &H1001
PROTO = &H1000A
SEQ=1
DLEN=0

Client.SendData (CS_MAGIC & PROTO & SEQ & MRIM_CS_HELLO & DLEN & client.localIP & client.LocalPort)
Смотрю через сниффер и вот что не пойму: размер пакета 48 байт, независимо от того сколько данных я отправляю. Вообще ересь какая-то.

Правильно ли реализована отправка пакета?

Последний раз редактировалось kiber_punk; 27.09.2010 в 05:10.
kiber_punk вне форума Ответить с цитированием
Старый 27.09.2010, 13:14   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем вам через ActiveX то?
через простой WinSock не катит?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.09.2010, 04:36   #3
kiber_punk
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 16
По умолчанию

Ну во первых в VB всё через ActiveX.
Ну и с ActiveX работать удобно, нет привязки к языку.
Отклонились от темы.
Пробовал и через сокеты Delphi - тоже самое.
Кто работал с протоколом, подскажите пожалуйста, что не так? Пакет вроде бы "правильный".
kiber_punk вне форума Ответить с цитированием
Старый 03.10.2010, 22:26   #4
Bad-XxX
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 18
По умолчанию

Когда-то давно сталкивался. От VB лучше откажись, правильно тебе посоветовали.
В Делфи используй поток TMemoryStream и через него делай всё. Заголовок реализуй в виде структуры типа record, так удобней.
У меня пару лет назад это выглядело так:
type
TMraPacket = record
magic : Cardinal;
proto : Cardinal;
seq : Cardinal;
msg : Cardinal;
dlen : Cardinal;
from : Cardinal;
fromport : Cardinal;
reserved :array[1..16]of char;
end;
Заполняешь структуру, пишешь в поток, добавляешь в поток необходимые данные (в зависимости от типа пакета) и про dlen не забывай. Потом этот поток отправляешь и потоком же принимаешь (удобней разбивать хедер и даннные).
Вот ещё кусок:
function MRIM_PACKET(msg_, dlen_: Cardinal):TMraPacket;
begin
with Result do
begin
magic:=CS_MAGIC;
proto:=PROTO_VERSION;
seq:=0;
msg:=msg_;
dlen:=dlen_;
from:=0;
fromport:=0;
reserved:=#0#0#0#0#0#0#0#0#0#0#0#0# 0#0#0#0;
end;
end;

Правильный пакет для хелоу будет сформирован так: MRIM_PACKET(MRIM_CS_HELLO,0);
Остальное сам.
Bad-XxX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mail.ru agent хочу написать FAiver Работа с сетью в Delphi 6 01.11.2011 07:46
Mail Agent doniyor Работа с сетью в Delphi 5 29.04.2010 08:03
работа с компонентом mail.ru agent D_E_N Работа с сетью в Delphi 1 19.12.2009 20:09