Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > IdMappedPortTCP портит пакеты


Автор: Mikanor 12.6.2010, 13:13
Счас пытаюсь сделать прокси на C++ Builder 2010. Все бы хорошо да портит он пакеты. Для теста сделал закругленную систему клиент сервер - когда сервер возвращает клиенту то что от него получил.

Исходник прокси:
Код

void __fastcall TForm1::IdMappedPortTCP1Connect(TIdContext *AContext)
{
    ListBox1->Items->Add(L"Конект от " + AContext->Binding()->PeerIP);
    AContext->Connection->Intercept = new TIdConnectionIntercept(0);
    AContext->Connection->Intercept->OnReceive = IdConnectionIntercept1Receive;
    AContext->Connection->Intercept->OnSend = IdConnectionIntercept1Send;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdConnectionIntercept1Receive(TIdConnectionIntercept *ASender,
          TBytes &ABuffer)
{
    String z = " : ";
    for (int i = 0; i < ABuffer.Length; i++)
        z += IntToHex((int)ABuffer[i],2) + L' ';
    OutputDebugStringW(("Пакет от сервера длинной " + IntToStr(ABuffer.Length) + z).c_str());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdConnectionIntercept1Send(TIdConnectionIntercept *ASender,
          TBytes &ABuffer)
{
    String z = " : ";
    for (int i = 0; i < ABuffer.Length; i++)
        z += IntToHex((int)ABuffer[i],2) + L' ';
    OutputDebugStringW(("Пакет от сервера длинной " + IntToStr(ABuffer.Length) + z).c_str());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdMappedPortTCP1Disconnect(TIdContext *AContext)
{
    if(AContext->Connection->Intercept)
    {
        ListBox1->Items->Add(L"Дисконект от " + AContext->Binding()->PeerIP + L" инициированный клиентом.");
        delete AContext->Connection->Intercept;
        AContext->Connection->Intercept = 0;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdMappedPortTCP1OutboundDisconnect(TIdContext *AContext)
{
    if(AContext->Connection->Intercept)
    {
        ListBox1->Items->Add(L"Дисконект от " + AContext->Binding()->PeerIP + L" инициированный сервером.");
        delete AContext->Connection->Intercept;
        AContext->Connection->Intercept = 0;
    }
}
//---------------------------------------------------------------------------

Пробовал и с TIdConnectionInterceptи без него,и наследовать от него - все равно выдает туже фигню.

В логе аутпута
Код

Debug Output: Пакет от клиента длинной 71 : 0A 84 88 B2 A9 13 10 7E 5C C3 73 AA 34 C9 1C 38 84 DB F5 07 4A 3B 73 E3 7E E5 F3 9E B7 C5 47 99 2A 52 6B 7B D6 1C F3 A0 3C 69 C3 16 FB 56 E4 10 1C D5 0B 54 8C 07 A6 61 F4 F9 83 9E E8 9A AE A2 1C D1 CD F9 F6 49 DF  
Debug Output: Пакет от сервера длинной 71 : 0A 04 08 32 29 13 10 7E 5C 43 73 2A 34 49 1C 38 04 5B 75 07 4A 3B 73 63 7E 65 73 1E 37 45 47 19 2A 52 6B 7B 56 1C 73 20 3C 69 43 16 7B 56 64 10 1C 55 0B 54 0C 07 26 61 74 79 03 1E 68 1A 2E 22 1C 51 4D 79 76 49 5F 
Debug Output: Пакет от клиента длинной 71 : 0A 84 88 B2 A9 13 10 7E 5C C3 73 AA 34 C9 1C 38 84 DB F5 07 4A 3B 73 E3 7E E5 F3 9E B7 C5 47 99 2A 52 6B 7B D6 1C F3 A0 3C 69 C3 16 FB 56 E4 10 1C D5 0B 54 8C 07 A6 61 F4 F9 83 9E E8 9A AE A2 1C D1 CD F9 F6 49 DF  
Debug Output: Пакет от сервера длинной 71 : 0A 04 08 32 29 13 10 7E 5C 43 73 2A 34 49 1C 38 04 5B 75 07 4A 3B 73 63 7E 65 73 1E 37 45 47 19 2A 52 6B 7B 56 1C 73 20 3C 69 43 16 7B 56 64 10 1C 55 0B 54 0C 07 26 61 74 79 03 1E 68 1A 2E 22 1C 51 4D 79 76 49 5F 
Debug Output: Пакет от клиента длинной 71 : 0A 84 88 B2 A9 13 10 7E 5C C3 73 AA 34 C9 1C 38 84 DB F5 07 4A 3B 73 E3 7E E5 F3 9E B7 C5 47 99 2A 52 6B 7B D6 1C F3 A0 3C 69 C3 16 FB 56 E4 10 1C D5 0B 54 8C 07 A6 61 F4 F9 83 9E E8 9A AE A2 1C D1 CD F9 F6 49 DF  
Debug Output: Пакет от сервера длинной 71 : 0A 04 08 32 29 13 10 7E 5C 43 73 2A 34 49 1C 38 04 5B 75 07 4A 3B 73 63 7E 65 73 1E 37 45 47 19 2A 52 6B 7B 56 1C 73 20 3C 69 43 16 7B 56 64 10 1C 55 0B 54 0C 07 26 61 74 79 03 1E 68 1A 2E 22 1C 51 4D 79 76 49 5F  
Debug Output: Пакет от клиента длинной 71 : 0A 84 88 B2 A9 13 10 7E 5C C3 73 AA 34 C9 1C 38 84 DB F5 07 4A 3B 73 E3 7E E5 F3 9E B7 C5 47 99 2A 52 6B 7B D6 1C F3 A0 3C 69 C3 16 FB 56 E4 10 1C D5 0B 54 8C 07 A6 61 F4 F9 83 9E E8 9A AE A2 1C D1 CD F9 F6 49 DF  
Debug Output: Пакет от сервера длинной 71 : 0A 04 08 32 29 13 10 7E 5C 43 73 2A 34 49 1C 38 04 5B 75 07 4A 3B 73 63 7E 65 73 1E 37 45 47 19 2A 52 6B 7B 56 1C 73 20 3C 69 43 16 7B 56 64 10 1C 55 0B 54 0C 07 26 61 74 79 03 1E 68 1A 2E 22 1C 51 4D 79 76 49 5F  
Debug Output: Пакет от клиента длинной 71 : 0A 84 88 B2 A9 13 10 7E 5C C3 73 AA 34 C9 1C 38 84 DB F5 07 4A 3B 73 E3 7E E5 F3 9E B7 C5 47 99 2A 52 6B 7B D6 1C F3 A0 3C 69 C3 16 FB 56 E4 10 1C D5 0B 54 8C 07 A6 61 F4 F9 83 9E E8 9A AE A2 1C D1 CD F9 F6 49 DF 
Debug Output: Пакет от сервера длинной 71 : 0A 04 08 32 29 13 10 7E 5C 43 73 2A 34 49 1C 38 04 5B 75 07 4A 3B 73 63 7E 65 73 1E 37 45 47 19 2A 52 6B 7B 56 1C 73 20 3C 69 43 16 7B 56 64 10 1C 55 0B 54 0C 07 26 61 74 79 03 1E 68 1A 2E 22 1C 51 4D 79 76 49 5F  


Очень похоже что проксик режет все что выше 0x80 соотв - хотелось бы убрать это ограничение.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)