|
Возможно ли отключить входящий трафик при TCP соединении по GPRS? |
|
|
|
 |
Ответов
(15 - 29)
|
Apr 26 2011, 09:09
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 2-02-11
Пользователь №: 62 643

|
Цитата(av-master @ Apr 26 2011, 08:53)  vps - от 10у.е. / мес . что хочешь делай. http://budgetdedicated.com - ~$20-30/month Но я таки тоже посоветую этот вариант. Сервер на php, на вебхостинге -- это сколько-нибудь массово и надёжно не работает. Сервер писать на C или perl. На php тоже можно, но плохо. Лучше на C. И не факт, что нужна реляционная субд. Скорей достаточно berkeleydb. Лучше, быстрей, надёжней. И, возможно, UDP лучше. TCP в общем случае не гарантирует доставку... и какой-то ответ получать надо (туда пакеты ушли, обратно нифига -- а как понять, что они дошли? таймаут по-дефолту пол-дня ждёт если не больше)
Сообщение отредактировал Frolov Kirill - Apr 26 2011, 09:11
|
|
|
|
|
Apr 28 2011, 01:50
|
Местный
  
Группа: Свой
Сообщений: 202
Регистрация: 18-05-09
Из: Novosibirsk
Пользователь №: 49 204

|
Цитата(Alt.F4 @ Apr 25 2011, 20:06)  Добрый день. Соединяюсь с сервером по TCP и передаю GET'ом несколько переменных, в ответ сервер шлет отклик в два раза больший по размеру. Можно ли как-то на модеме отключить входящий трафик? Спасибо. Вы бы уточнили про какой размер трафика запроса/ответа идет речь! Чтобы можно было понять чей это ответ - TCP или Web-сервера или серверного скрипта Сервер и скрипт Ваши? Что он отвечает точно понятно? Или это чужая реализация? Если Вы хотите чтобы входящего трафика с сервера не было вообще - транспорт TCP не подойдет. Т.к. он по определению подразумевает обмен и наклодные затраты - синхронизация, квитирование, повтор при потере ... Сброс флага RST в заголовке TCP не подойдет (даже если бы у Вас был внешний стек), т.к. не угодать с моментом его установки! Он должен установлен и отослан уже после получения запроса Web-сервером и скриптом, но до ответа! Что не реально! Прямое подключение к сетевой СУБД MySQL- тоже не спасет, т.к. используется транспорт TCP тоже. Если необходимо минимизировать трафик, и в частности входящий от ответа сервера - используйте UDP. Но платой за это является отсутствие уверенности о доставке Ваших данных! Впрочем, что-то простое здесь можно и самому предложить в зависимости от ТЗ. Совсем уж доводить до нескольких сотен байт мобильный трафик вряд ли уместно, т.к. существует округление в большую сторону у операторов. Если же Вы расчитываете использовать нетарифицируемый интервал (есть на некоторых тарифах ~ <2кб), то тоже сомнительно. Как я ранее описывал на форуме такую ситуацию у меня - оператор просто заблокировал не несколько недель целевой IP. Правды у него (GSM-оператора) добиться не удалось. И мне пришлость использовать proxy. Но трафик уже был болеее 2кб. А значит округлялся до 100 кб
|
|
|
|
|
Apr 28 2011, 04:25
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Цитата Вы бы уточнили про какой размер трафика запроса/ответа идет речь! Собираюсь отправлять 80байт/с (это без заголовков TCP), и на каждый запрос, сервер будет отвечать: HTTP/1.1 200 OK Date: Sat, 23 Apr 2011 20:31:22 GMT Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny8 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0 X-Powered-By: PHP/5.2.6-1+lenny8 Vary: Accept-Encoding Content-Length: 0 Content-Type: text/html Цитата Сервер и скрипт Ваши? Что он отвечает точно понятно? Или это чужая реализация? Сервер хостера, скрипт мой. В принципе понятно, HTTP так устроен, на запрос-ответе... Цитата Если необходимо минимизировать трафик, и в частности входящий от ответа сервера - используйте UDP. Но платой за это является отсутствие уверенности о доставке Ваших данных! Это было бы идеальным вариантом, но я не знаю как обработать полученные данные по UDP на сервере. А уверенность о доставке мне не нужна... пока. Цитата Совсем уж доводить до нескольких сотен байт мобильный трафик вряд ли уместно, т.к. существует округление в большую сторону у операторов. У нас МТС до 50кбайт округляет. Но все равно из-за ответов сервера, я прикинул, за час работы набежит примерно 0,5$.
Сообщение отредактировал Alt.F4 - Apr 28 2011, 04:27
|
|
|
|
|
Apr 29 2011, 00:45
|
Местный
  
Группа: Свой
Сообщений: 202
Регистрация: 18-05-09
Из: Novosibirsk
Пользователь №: 49 204

|
Цитата(Alt.F4 @ Apr 28 2011, 07:25)  ... Это было бы идеальным вариантом, но я не знаю как обработать полученные данные по UDP на сервере. Про реализации и особенности UDP-сервера можно познакомиться например в кн. "Разработка сетевых программ на Perl" Но все это возможно и на PHP.
|
|
|
|
|
Apr 29 2011, 10:24
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 1-11-06
Пользователь №: 21 854

|
Ребята уже предлагали, но повторюсь. Если сервер ваш, то зачем использовать текстовый протокол HTTP? Откройте сокет и шлите данные какие вам угодно и ответ формируйте также какой нужен. обычный обмен данными через TCP. входящий траффик не возьмется ни откуда. На том же Builder или Delphi есть готовые неплохие компоненты работы с сокетом.
Сообщение отредактировал Roman_V - Apr 29 2011, 10:26
|
|
|
|
|
Apr 30 2011, 09:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
alx125, полистал рекомендованную Вами книгу. Но вот как все это дело развернуть на PHP, ума не приложу. Пробовал использовать пример с оф.сайта PHP. Взял порт 80, у хостера почти все закрыты: Код <?php $socket = stream_socket_server("udp://91.149.145.36:80", $errno, $errstr, STREAM_SERVER_BIND); if (!$socket) { die("$errstr ($errno)"); }
do { $pkt = stream_socket_recvfrom($socket, 1, 0, $peer); echo "$peer\n"; stream_socket_sendto($socket, date("D M j H:i:s Y\r\n"), 0, $peer); } while ($pkt !== false);
//и пишу в БД "$pkt" ?> Пробую передавать данные через терминалку " Hercules" (поддерживает UDP соединение). Но в результате ничего не приходит в ответ и в БД пусто... Подскажите пожалуйста, где ошибка. Спасибо. з.ы. видимо в строку udp://91.149.145.36:80 необходимо писать айпи клиента? Я написал сервера, считая что PHP будет просто слушать порт.
Сообщение отредактировал Alt.F4 - Apr 30 2011, 09:57
|
|
|
|
|
May 1 2011, 02:49
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Цитата У вас реально один путь, как я сказал, это управлять непосредственно содержимым заголовков TCP пакетов исходящих от вас. А как, в таком случае, на модеме можно открыть сессию TCP без использования встроенного стека? Спасибо.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|