Счас пытаюсь сделать прокси на 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 соотв - хотелось бы убрать это ограничение.
|