Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с MTU (Maximum Transmission Unit)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите решить проблему
vova_php
Отправлено: 11 Октября, 2012 - 18:07:29
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Здравствуйте. Столкнулся с проблемой, а именно - MTU.
Есть скрипт, который слушает udp порт и получает-отправляет данные.
Для отправки данных клиенту используется функция stream_socket_sendto, все данные отправляются сразу, 1-м выовом stream_socket_sendto. Иногда доходят не все данные ( человек сказал, что это связанно с ограничение MTU, у нас пакет весит ~3700 байт) .
Когда отправляешь данные порциями (вызов stream_socket_sendto идёт несколько раз), то опять не всем данные доходят.
Пожалуйста, подскажите как обойти.

(Отредактировано автором: 11 Октября, 2012 - 18:30:00)

 
 Top
Мелкий Супермодератор
Отправлено: 11 Октября, 2012 - 19:16:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




UDP и не должен всегда доходить.

MTU - понятие L2, и потому независимое от L3. Само собой, ваши вызовы sendto никак на это не влияют.


-----
PostgreSQL DBA
 
 Top
vova_php
Отправлено: 11 Октября, 2012 - 19:19:23
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Мелкий пишет:
UDP и не должен всегда доходить.

MTU - понятие L2, и потому независимое от L3. Само собой, ваши вызовы sendto никак на это не влияют.

Делаю вот так 2 варианта.
Вариант 1
$packet = "\xff\xff\xff\xff\x66\x0a";
foreach($lmonitor as $f) $packet .= format_ip($f['server_ip'], $f['server_port']);
$packet .= format_ip("0.0.0.0", 0);
stream_socket_sendto($socket, $packet, 0, $peer);

Вариант 2
stream_socket_sendto($socket, "\xff\xff\xff\xff\x66\x0a", 0, $peer);

$packet = '';
foreach($lmonitor as $f) $packet .= format_ip($f['server_ip'], $f['server_port']);
stream_socket_sendto($socket, $packet, 0, $peer);

stream_socket_sendto($socket, format_ip("0.0.0.0", 0), 0, $peer);
 
 Top
Мелкий Супермодератор
Отправлено: 11 Октября, 2012 - 19:29:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Я повторю, мне не трудно.
Уровни OSI изолированы. MTU - развлекаловка L2, L3 об этом не знает ровным счётом ничего.
Мелкий пишет:
Само собой, ваши вызовы sendto никак на это не влияют.


-----
PostgreSQL DBA
 
 Top
vova_php
Отправлено: 11 Октября, 2012 - 20:11:52
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Мелкий пишет:
Я повторю, мне не трудно.
Уровни OSI изолированы. MTU - развлекаловка L2, L3 об этом не знает ровным счётом ничего.
Мелкий пишет:
Само собой, ваши вызовы sendto никак на это не влияют.

А как в php его обойти можно? Этот MTU ?
Или вообще не как?
Смысл такой.В базе находяться ip адреса. Человек открывает программу нажимает кнопку получить ip из базы они ему выдаются.
Так вот за раз можно 200 ip отправить.
А в базе их у меня больше 400 может чуть больше.Если слать ровно 200 из базы то скрипт работает и программа принимает. А как сделать что бы на программу шли несколько запросов?Ну допустим первые 200 Ip ушли на программу, потом вторые 200 ушли и так всю базу передавать)
Можно пример кода.Мои задумки я выложил сверху не получаеться у меня.С Вашими щас попробую.

(Отредактировано автором: 11 Октября, 2012 - 20:34:39)

 
 Top
Okula
Отправлено: 11 Октября, 2012 - 20:49:47
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




vova_php, цикл религия не позволяет использовать? Улыбка
 
 Top
vova_php
Отправлено: 11 Октября, 2012 - 20:54:32
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Okula пишет:
vova_php, цикл религия не позволяет использовать?

Можно пример кода?
(Добавление)
Okula пишет:
vova_php, цикл религия не позволяет использовать?

Цикл не работает
for($i=0;$i<5;$i++) stream_socket_sendto($socket, $packet[$i], 0, $peer);
Ещё варианты
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB