Здравствуйте уважаемые.
Задача такова:
На серверное приложение поступает SMPP пакет (Short message peer-to-peer protocol (SMPP) — протокол, описывающий взаимодействие конечного клиента с SMS-сервером. Используется для передачи SMS и USSD сообщений, как правило в системах VAS.), этот пакет Я должен словит -> изменить -> отправить обратно клиенту пославшему запрос. В качества инструмента Я выбрал «C++Builder 6» , перехватывать пакеты буду с помощью сокетов.
Вступление:
Как это всё сделать??? ))) Работать с сокетами умею, но одно дело файл переслать или чат простенький сделать, а тут задачка посложнее и поинтереснее. При передаче PDU пакета («PDU (protocol data units, пакетов данных протокола) передаваемой на уровне 4 OSI (TCP/IP сессии или X.25 SVC3). PDU имеют бинарное представление для повышения эффективности передачи. Обмен пакетами может происходить как синхронно (после отправки запроса дальнейший обмен пакетами приостанавливается до получения ответа), так и асинхронно (запросы отправляются без задержек, обработка ответов происходит по мере их поступления).») сервер принимает через String strClientRequest = Socket->ReceiveText(); непонятно что, по спецификации скорее всего это бинарник.
Через TMemoryStream,сохраняю полученный пакет в файл ( в идеале, нужно обойтись без файла, но пока что Я не знаю как),и естественно когда открыть этот файл с помощю блокнота ,то ничего мы там не увидим, кроме как абракадабры)) Но а вот если через хекс редактор, то нарисуется совсем другая картина :
http://www.rsdn.ru:80/File/64676/Hex.JPG
Кусок кода,который Я успользую :
void __fastcall TfrmXX::ServerSocketGetClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
String strClientRequest = Socket->ReceiveText();
log("Получен запрос!");
TMemoryStream* MS = new TMemoryStream ();
MS->Position = 0;
MS->Write( strClientRequest.c_str() , strClientRequest.Length() );
MS->SaveToFile( "File.txt" );
delete MS;
}
Собственно вопрос:
Как выдрать из данного файла нужную мне информацию, или как обойтись без него и напрямую работать с полученным пакетом? Если кто уже работал с SMPP,то пожалуйста поделитесь своим опытом и знаниями,вам потом воздастся))
Здравствуйте, v1tal1us, Вы писали:
...
V>Собственно вопрос:
V> Как выдрать из данного файла нужную мне информацию, или как обойтись без него и напрямую работать с полученным пакетом? Если кто уже работал с SMPP,то пожалуйста поделитесь своим опытом и знаниями,вам потом воздастся))
Вообщем, то SMPP это протокол.
А присылают тебе следущее:
Заголовок — первые 16 байт (4*Int) —
1-Общая длина пакета,
2-ИД-команды,
3-Статус,
4-Уникальный ИД.
следующие байты(Общая длина-16) взависимости от комманды(ИД-комманды).
я сам разбирался не один день с этим протоколом. Инфу брал с
здесь(isms.ru)