Форум: "Сети";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
ВнизКак лучше реализовать пересылку пакетов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c