Главная страница
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.04 c
2-1195104416
АндрейК
2007-11-15 08:26
2007.12.09
Пробелом выделить нужные строки в DBGrid


2-1195204511
Pro100
2007-11-16 12:15
2007.12.09
Дробная часть


1-1189288423
Dr. Andrew
2007-09-09 01:53
2007.12.09
Чем можно заменить GetTickCount? Нужна точность до 1 мсек!


15-1193175070
Прочее
2007-10-24 01:31
2007.12.09
Как сделать чтобы в OnKeyPress проходило сообщение VK_UP ?


2-1194953917
Uno
2007-11-13 14:38
2007.12.09
Неудается переписка