Перехват SMPP пакетов
Задача такова:
На серверное приложение поступает 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://forum.codenet.ru/attachment.php?attachmentid=1692&stc=1&d=1174861417
Кусок кода,который Я успользую :
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;
}
Собственно вопрос:
Как выдрать из данного файла нужную мне информацию(первые 4 октета ), и изменить её, или как обойтись без него и напрямую работать с полученным пакетом? Если кто уже работал с SMPP,то пожалуйста поделитесь своим опытом и знаниями,вам потом воздастся))