Проблемы у 3.0 с .Net Socket для WebPlayer

Сеть в Unity3D

Проблемы у 3.0 с .Net Socket для WebPlayer

Сообщение Guyver 24 янв 2011, 19:41

уважаемые знатоки, внимание вопрос ...

я вот гляжу на форум и не вижу чтобы поднимались подобные темы а ведь интересно ....
1. мне не удаётся побороть проблему с CrossDomain головняками у 3.0 в WebDeploy (я ваапще в шоке нафига было делать это порно) ... если кто решал эту проблему - отзовитесь .. чтобы была конструктивная беседа (а не вилы по воде и отсылы на Manual как это принято) ..

2. я тут уже не первый раз напарываюсь на обрывки фраз что у моны проблемы с threading ... и отсюда вопрос ... а как прикажете выгребать пакеты из сокета? я уже и так делаю через Socket.Select что вовсе не кошерно ... а если я это буду делать в Update ... пакетик раз в кадр это не смешно же ... он захлебнётся если будет чуть больше чем 1 пакет в 1/30. секунды +-...

отсюда вопрос ... как жить то дальше?

очень надеюсь что найдётся опытный человек ...
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск

Re: Проблемы у 3.0 с .Net Socket для WebPlayer

Сообщение DbIMok 24 янв 2011, 20:00

Guyver писал(а):я ваапще в шоке нафига было делать это порно

ответ
Guyver писал(а):чтобы была конструктивная беседа

была не один раз
Guyver писал(а):пакетик раз в кадр это не смешно же

и правда не смешно... пакетик... гы-гы
а если это... примеры посмотреть?
нет проблем и с потоками, если не лезть из них к объектам Unity
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Проблемы у 3.0 с .Net Socket для WebPlayer

Сообщение Guyver 24 янв 2011, 20:48

а если это... примеры посмотреть?

ой а если вникнуть в код примера ... то можно обнаружить то что чтение из сокетов происходит селектом ... в апдейте ... по пакету в кадр (как раз то о чём я говорил) ... нет ?

ведь эта функция фильтрует список ... и оставляет только те сокеты, которые имеют что сказать
Синтаксис:
Используется csharp
Socket.Select(connections, null, null, 1000);

а эта функция вроде как выгребает 1 сообщение из очереди сокета
Синтаксис:
Используется csharp
int read = socket.Receive(receivedbytes);

а функция Update вроде как происходит раз в кадр ....

если я не прав ткните носом - осознаю ... но сдаётся мне обратное ...

была не один раз

там нет ни слова про конкретно сокеты ... в итоге у чела магическим образом всё заработало ... он даже сам не в теме как так ...

разумеется я читал мануалы ... да я вставил в код
Синтаксис:
Используется csharp
                if(Application.isWebPlayer)
                {
                        security = Security.PrefetchSocketPolicy(serverIP, serverPort);
                       
                        if (!security)
                        {
                                Debug.Log ("PrefetchSocketPolicy failed.");
                        }
                }
 

после этого пропал эксепшен о CrossDomain policy ... ну прогресс да

и да я даже выкладываю файло crossdomain.xml в папку с WebDeploy
Синтаксис:
Используется xml
<?xml version="1.0"?>
<cross-domain-policy>
   <allow-access-from domain="*" to-ports="1200-9000"/>
</cross-domain-policy>
 

этот шаг ничего не даёт по ощущениям .. и если честно я не доконца уверен что это нужно делать если мы прописали ручками айпи и порт в коде (см. выше)

единственное что может быть не так с этим xml ... это то что я запускаю Web приложение локально на компе ... НО у меня сервер расположен тоже локально и обращение происходит по 127.0.0.1 ... только порт 3001 ..

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


я всё ещё жажду конструктивной беседы ... а не указания перста по направлению леса из мануалов

п.с. про threading
Вот ссылка где вы тоже приняли участие ... viewtopic.php?f=18&t=3393&st=0&sk=t&sd=a

где товарищ discouraged_one из Unity Technologies пишет чёрным по белому
В WebPlayer нельзя создавать\запускать потоки - и соответствующий api вырезан.

+ я видел на офф форуме тоже подобные мысли проскакивали ...

или это какие-то другие потоки?
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск

Re: Проблемы у 3.0 с .Net Socket для WebPlayer

Сообщение discouraged_one 24 янв 2011, 21:05

Это я там описался - процессы нельзя создавать (собственно это было видно из дискуссии - как раз в Process и была проблема)
Насчет потоков\сокетов не знаю - совсем не мой area. Пробывали на официальном форуме искать спрашивать? если сделаете - может пну наших mono-guys посотреть\ответить
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: Проблемы у 3.0 с .Net Socket для WebPlayer

Сообщение Guyver 24 янв 2011, 21:12

всё ... про htreading и процессы это моя невнимательность ... прошу прощения под конец дня уже подтупливаю .... в любом случае как доберусь до threading в WebPlayer потестю .. возможно там всё ок (сейчас кусок кода который пакеты выгребает в потоке обрёл вид коментов ... т.к. решаю проблему с банальным Socket.Connect())
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск

Re: Проблемы у 3.0 с .Net Socket для WebPlayer

Сообщение DbIMok 24 янв 2011, 21:30

Guyver писал(а):эта функция вроде как выгребает 1 сообщение из очереди сокета

почему вы уверены что 1 а не 10?
Guyver писал(а):я даже выкладываю файло crossdomain.xml в папку с WebDeploy

вы справку вообще читали? где там такое написано?
нужно запустить сервер безопасности, который отдаст crossdomain
x:\Program Files\Unity3\Editor\Data\Tools\SocketPolicyServer\
если он не на порту 843, то нужно сделать Security.PrefetchSocketPolicy() с указанием где и на каком порту
crossdomain должен быть ASCII. и все!
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Проблемы у 3.0 с .Net Socket для WebPlayer

Сообщение Guyver 24 янв 2011, 22:19

Во первых спасибо .. я разобрался и всё заработало. Оч признателен ...

Насчёт хелпа ... в огромном океане английского текста про политики, XML`ки и прочую ересь ... между описанием XML для UDP соединений и про третьи сетевые либы ... мелкий неприглядный абзац про утилиту для вашего удобства ... я сейчас 15 минут потратил на поиск этого абзаца зная что я ищу и что он тут обязан быть судя по вашим словам .... (хотя пока разбирался, читал страничку раза на 3 по диагонали)
Помоему всёж такие штуки нада выносить в начало (хотяб где про Socket начинается) и выделять как-то.

про Socket.Select повникаю в MSDN и разберусь сам .... это уже другая история ...

спасибо.
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск


Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4