Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Глюк с сокетами (http://www.flasher.ru/forum/showthread.php?t=145123)

Thanat0s 29.09.2010 20:47

Глюк с сокетами
 
Написал сервер на C++ и клиент на as3, общающиеся по сокетам. Добавил туда пинги. Заметил, что задержка всегда кратна 10 (30, 40, 50 мс). В чем тут дело?
Вообще, где может крыться задержка при работе с сокетами в as3? Совершенно случайно наткнулся на метод flush, который необходимо использовать при записи. То есть метод, конечно, лежит на поверхности, но нигде почему-то (кроме описания самого метода, что довольно глупо) не сказано "обязательно используйте его!". Нет ли подобных подводных камней при чтении из сокета?
Другими словами: как обеспечить максимальное быстродействие при работе с сокетами в as?

Добавлено через 3 часа 25 минут
Заметил, что пакеты, которые должны приходить с разницей где-то в 100 мс, приходят разом (то есть считываются из сокета за одно срабатывание события SOCKET_DATA), причем с большой задержкой.
Тут проблема в сервере или событие вызывается с опозданием?

gloomyBrain 30.09.2010 01:40

Цитата:

Нет ли подобных подводных камней при чтении из сокета?
Нет. Ну или - не должно быть =)

Цитата:

Тут проблема в сервере или событие вызывается с опозданием?
Вызывайте flush на сервере (ну или его аналог). По поводу пакетов - это не пакеты, это порции данных. Эти понятия стоит разделять

Thanat0s 30.09.2010 12:10

Ок, а что тогда понимается под словом "пакеты"? Или это понятие исключительно для низкоуровневых интерфейсов?

Psycho Tiger 30.09.2010 13:02

В моём понимании пакет - это порция данных с логическим концом. Например, сообщение в чат. Порция данных, которая полностью охватывает это сообщение. Порции данных же может как не хватить для пакета, так и быть с избытком.

(пойду погуглю что-ли, прав ли я)
Wiki:
Цитата:

Пакет данных — некоторое количество информации, организованное определённым способом, идущее по протоколу.
Я прав :P

orcpochta 30.09.2010 13:06

Порции данных надо принудительно проталкивать из буфера на сервере. Сам он этого не сделает до определенного момента, например пока буфер не заполнится.

Пакет - это порция данных на уровне протокола (причем пакет не обязательно содержит часть запрашиваемых или отсылаемых пользователем данных).

Порция данных с логическим концом - это порция данных с логическим концом (request/response)

Thanat0s 30.09.2010 15:56

Ну, выходит, я употребил слово верно.
Что касается отправки - мы так и не нашли, как проталкивать данные на сервере. Пришлось решать эту проблему через жопу - установкой маленькой длины буфера, чтоб они чаще отправлялись.

orcpochta 30.09.2010 16:04

Цитата:

Ну, выходит, я употребил слово верно.
никак не выходит

Добавлено через 1 час 39 минут
Цитата:

В моём понимании пакет - это порция данных с логическим концом. Например, сообщение в чат.
Цитата:

Пакет данных — некоторое количество информации, организованное определённым способом, идущее по протоколу.
Цитата:

Я прав :P
ты никак не прав


Часовой пояс GMT +4, время: 23:58.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.