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
Форумы портала PHP.SU :: Версия для печати :: Проблема с MTU (Maximum Transmission Unit)
Форумы портала PHP.SU » » Работа с сетью » Проблема с MTU (Maximum Transmission Unit)

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

1. vova_php - 11 Октября, 2012 - 18:07:29 - перейти к сообщению
Здравствуйте. Столкнулся с проблемой, а именно - MTU.
Есть скрипт, который слушает udp порт и получает-отправляет данные.
Для отправки данных клиенту используется функция stream_socket_sendto, все данные отправляются сразу, 1-м выовом stream_socket_sendto. Иногда доходят не все данные ( человек сказал, что это связанно с ограничение MTU, у нас пакет весит ~3700 байт) .
Когда отправляешь данные порциями (вызов stream_socket_sendto идёт несколько раз), то опять не всем данные доходят.
Пожалуйста, подскажите как обойти.
2. Мелкий - 11 Октября, 2012 - 19:16:29 - перейти к сообщению
UDP и не должен всегда доходить.

MTU - понятие L2, и потому независимое от L3. Само собой, ваши вызовы sendto никак на это не влияют.
3. vova_php - 11 Октября, 2012 - 19:19:23 - перейти к сообщению
Мелкий пишет:
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);
4. Мелкий - 11 Октября, 2012 - 19:29:44 - перейти к сообщению
Я повторю, мне не трудно.
Уровни OSI изолированы. MTU - развлекаловка L2, L3 об этом не знает ровным счётом ничего.
Мелкий пишет:
Само собой, ваши вызовы sendto никак на это не влияют.
5. vova_php - 11 Октября, 2012 - 20:11:52 - перейти к сообщению
Мелкий пишет:
Я повторю, мне не трудно.
Уровни OSI изолированы. MTU - развлекаловка L2, L3 об этом не знает ровным счётом ничего.
Мелкий пишет:
Само собой, ваши вызовы sendto никак на это не влияют.

А как в php его обойти можно? Этот MTU ?
Или вообще не как?
Смысл такой.В базе находяться ip адреса. Человек открывает программу нажимает кнопку получить ip из базы они ему выдаются.
Так вот за раз можно 200 ip отправить.
А в базе их у меня больше 400 может чуть больше.Если слать ровно 200 из базы то скрипт работает и программа принимает. А как сделать что бы на программу шли несколько запросов?Ну допустим первые 200 Ip ушли на программу, потом вторые 200 ушли и так всю базу передавать)
Можно пример кода.Мои задумки я выложил сверху не получаеться у меня.С Вашими щас попробую.
6. Okula - 11 Октября, 2012 - 20:49:47 - перейти к сообщению
vova_php, цикл религия не позволяет использовать? Улыбка
7. vova_php - 11 Октября, 2012 - 20:54:32 - перейти к сообщению
Okula пишет:
vova_php, цикл религия не позволяет использовать?

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

Цикл не работает
for($i=0;$i<5;$i++) stream_socket_sendto($socket, $packet[$i], 0, $peer);
Ещё варианты

 

Powered by ExBB FM 1.0 RC1