Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.09;
Скачать: CL | DM;

Вниз

Как лучше реализовать пересылку пакетов   Найти похожие ветки 

 
user51   (2007-04-03 16:22) [0]

Как лучше реализовать пересылку пакетов.
Есть офис подключенный к интернету через ДСЛ модем,
там есть 10 компов на каждом стоит прога стороннего производителя (шейпер) и слушает порт.У меня клиет шейпера соответственно. Причем виден мною только сам модем компы напрямую не видны у них своя внутрення сеть, но я могу включить перенаправление портов- все что получает модем по какому нибудь порту пересылать на один какойто комп.  Надо допустим подсоединистя к любому компу и соответственно управлять и снимать данные шейпера. Мысль сделать прогу на одном компе чтоб она слушала порт клиента шейпера и посылала полученные пакеты на выбранный комп в серверную часть шейпера и наоборот что получила с серверной части на клиент на моем компе. Как лучше реализовать пересылку пакетов или может другие варианты есть ?


 
Сергей М. ©   (2007-04-03 16:29) [1]


> Как лучше реализовать пересылку пакетов


Почтой.
Или - еще лучше - фельдегерской службой.


> Мысль сделать прогу


Вот админ-то обрадуется)


 
user51   (2007-04-03 16:29) [2]

я и есть админ


 
Сергей М. ©   (2007-04-03 16:43) [3]


> я и есть админ
>


Ай малацца)

Ну и нахрена тебе, "админу", прогописательством заниматься ?


 
SlymRO ©   (2007-04-03 17:02) [4]

1. VPN настрой на сервере и выбрось его концы наружу (500UDP и еще что-то) конекся наздоровие
2. Аля прокси, но тады нужен клиент к прокси
3. Пользовать готовый socks прокси, если программа поддерживает


 
user51   (2007-04-03 17:53) [5]

СПАСИБО  БУДУ ВАШИ ВАРИАНТЫ ИЗУЧАТЬ

в моей реализации
Использую ctNonBlocking ServerSocket ClientSocket
ClientSocket соединяется с нужной серверной частью шейпера внутри офиса
ServerSocket слушает порт к которому я подсоединяюсь клиентской частью со своего компа. И соответсвено все полученные пакеты тупо пересылают друг другу   ClientSocket <--> ServerSocket
но иногда происходит склеивание пакетов
серверверная часть  шейпера  шлет клиентской пакеты по 2400 байт
но иногда склеивает два в один и получается один 4800
и клиентская шейпера часть виснет. Как избежать склеивания ?

numread_client_most:=clientSocket_most.Socket.ReceiveBuf(sbuf_tmp_client_most,cl ientSocket_most.Socket.ReceiveLength);
if ServerSocket_most.Socket.ActiveConnections > 0 then
ServerSocket_most.Socket.Connections[0].Sendbuf(sbuf_tmp_client_most,numread_cli ent_most);

NumRead_server_most:=Socket.ReceiveBuf(sbuf_tmp_server_most,Socket.ReceiveLength );
if ClientSocket_most.Socket.Connected then
ClientSocket_most.socket.sendbuf(sbuf_tmp_server_most,NumRead_server_most);


 
SlymRO ©   (2007-04-04 06:34) [6]

Судя по всему ты остановился на 2 варианте...
user51   (03.04.07 17:53) [5]
2400 байт

MTU 1500 (не думаю что больше 2400)... пакет не может быть больше MTU
Как избежать склеивания ?
никак


 
Сергей М. ©   (2007-04-04 08:20) [7]


> user51   (03.04.07 17:53) [5]


> клиентская шейпера часть виснет


Значит там ошибка в транспортном алгоритме.


> Как избежать склеивания ?


Никак. TCP - поточный протокол, на транспортном уровне в нем нет никаких пакетов, есть только информационный поток.


> sendbuf


Это - функциональный метод.



Страницы: 1 вся ветка

Текущий архив: 2007.12.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
5-1163762981
Vitebsky
2006-11-17 14:29
2007.12.09
TRichEdit - просмотр стилей


15-1194708068
Kostafey
2007-11-10 18:21
2007.12.09
Современный научный язык программирования


15-1194723363
Dib@zol
2007-11-10 22:36
2007.12.09
Количество символов в DWORD-переменной


1-1189948331
andreil
2007-09-16 17:12
2007.12.09
Ошибка времени выполнения


3-1186494647
SLesya
2007-08-07 17:50
2007.12.09
отладчик в dll/bpl