Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java ME (J2ME) > ServerSocketConnection |
Автор: W0LF 12.4.2006, 20:05 | ||||
я так понял, что телефон может быть сервером, кто-нидь скажет, операторы России, Украины держат эту штуку? Там просто нужен hostname, правда есть такой метод, как getLocalAddress() у интерфейса ServerSocketConnection, но он может возвращать 0.0.0.0... Никто не сталкивался? вот для примера( может кто скажет, как энто превратить в рабочий вариант?): SocketConnection Interface
ServerSocketConnection Interface
Заранее спасибо |
Автор: W0LF 13.4.2006, 20:18 |
Все, я разобрался.Если кому надо, то в WTK22 есть пример... Кстати пробовал с Life на Jeans и обратно - работает, ток там плавающие ip, их мона каждый раз отправлять с помощью WMA, но не все телефоны держат WMA... |
Автор: DEMOVERSION 14.4.2006, 09:28 |
А можно пример и вообще что делает прога? |
Автор: Dancer 14.4.2006, 10:02 |
В принципе - можно поднять сервер в тырнете, у которого будет определённый адрес, ну например: http://www.my_mobile_SSocket_switcher.ru На этом серваке ведёшь что-то он-лайн логирования, а точнее: если кто-то захотел стать серверо, то должен прислать определённое сообщение, о том, что я такой-то такой-то (MIDlet) стал сервером и имею вот такое вот IP. Приложение, которому нужен данный (Server-MIDlet) идёт по адресуhttp://www.my_mobile_SSocket_switcher.ru и смотрит, есть ли сейчас активные Server-MIDlet если да, то выбирает из списка нужный ему, ну или первый из списка и т.д. (думаю идея понятна) Но если у нас телефон поддерживает возможность работы с HTTP из мидлета, то JSR-120 он точно может поддерживать ![]() Хотя мой вариант имеет право на жизнь и вполне очень универсален. (ИМХО) |
Автор: W0LF 14.4.2006, 13:51 | ||
Прога - просто шашки по сети. |
Автор: DEMOVERSION 17.4.2006, 09:14 |
я не понял, клиент коннектиться к веб-серверу или мобильнику напрямую? если второй вариант то как? |
Автор: javastic 17.4.2006, 10:09 |
А я бы сделал через веб-сервер и всё было бы ГУД. ![]() |
Автор: W0LF 17.4.2006, 14:28 |
К мобильнику напрямую! а пример вот : http://forum.vingrad.ru/index.php?showtopic=91612&view=findpost&p=701283 Там в SocketConnection Interface hostname = ServerSocketConnection.getLocalAddress(); то есть на сервере нужно взять LocalAddress(getLocalAddress()) ибо он плавающий, и передать клиенту(допустим с помощью WMA) javastic, Для лабы в универ, которая должна использовать сокеты это вполне подойдет ![]() а вот сервера я никогда не писал ![]() |
Автор: Dancer 17.4.2006, 16:48 |
JSP - этого будет вполне достаточно, сидишь слушаешь, как только что-то тебе пришло на твою страницу, то берёшь разбираешь request, в зависимости от того, что пользователь в запросе к этой странице навыбирал (строчку запроса сформировал), в зависимости от этого делаешь ответ этому пользователю, ну и вносишь какую-то информацию в БД или ещё где ты будешь хранить записи о твоих шашечных баталиях) Из мидлета, делаешь вызов http://www.my_site.ru/log_my_MID_server.jsp?name=NIK;reg_as_server=true;другая_информация( например, сколько этот серврер будет ждать пока к нему не подключиться кто-либо, по окончанию этого таймаута он отключается, ну и много чего ещё можно нафантазировать) в JSP разбираешь параметры, исходя из того какие параметры есть и какое они имеют значение организуешь всю логику работы. Например если есть параметр reg_as_server=true то, тот кто сейчас стучиться, он является сервером для отальных и ожидает подсоединения к себе клинетов. Получаешь IP с которого пришёл данный запрос, и заносишь это в своё хранилище (БД, XML, текстовый файл, Hashtable в памяти приложения на сервере, etc.) далее другой клиент идёт на страницу, на которой можно посмотреть есть ли сервера, которые ожидают подсоединения к себе клиентов, и по нику узнать кто ожидает. http://www.my_site.ru/servers_wait.jsp вытаскиваем из БД или где мы там храним наши здаписи, всё что касается текущих серверов, которые ожидают к себе подключения, IP, ник того кто запустил этот сервер на телефоне, возможно время когда этот сервер стартанул своё ожидание, и возомжно таймаут для ожидания, ну и так далее. Пользователь выбирает сервак (по IP или ещё как, не важно, главное что он знает IP сервера к которому хочет сконнектиться) Далее коннектиться и играет. По окончанию, с сервера-МИДЛЕТА может послаться результат как закончилась игра (возможно лог ходов и т.д.) на какакую либо специально созданную jsp или же уже на имеющиеся, с определённым набором параметров. Далее на серваке можно организовать лист рекордов (ну и что фантазия позволит) ![]() А если всё будет прикольно работать, то можно идти искать, кто такое может купить для коммерческой эксплуатации ![]() |
Автор: javastic 18.4.2006, 08:58 | ||||
Да, для практики сойдёт, а для реально работающего приложения не очень. Ну представь если ты выпустил коммерческий продукт, а им смогут пользоваться только меньшенство, а большинство удалят его со своего телефона. Ничего сложного в написании сервера нет. Добавлено @ 09:01
А можно сделать так: пользователь создает игру и автоматически является сервером. =) Добавлено @ 09:11 Кстати, предлагаю замутить какой-нибудь такой сетевой проект. ![]() Шашки там, крестики нолики, морской бой или ещё чего, по графике не очень сложное. ![]() Что скажете? |
Автор: erka 18.4.2006, 11:34 |
Идея вообще прикольная. Замутить то можно, только вот траблы могут быть с разными мобильными операторами(IP одни реальные дают, другие не реальные). Кстати, для тех кто хочет что-то многопользовательское писать, сразу стоит отметить, что в j2me есть неприятное ограничение по количеству открытых активных соединений ![]() |
Автор: dmitriy1111 18.4.2006, 18:28 |
javastic http://www.wapportal.ru - шашки , шахматы ... ![]() |
Автор: javastic 19.4.2006, 08:43 |
dmitriy1111, ну и что? ![]() Так что извини. ![]() |
Автор: dmitriy1111 19.4.2006, 11:10 |
Конкуренция всегда была только на пользу ![]() |
Автор: W0LF 19.4.2006, 14:35 |
Ого, как тут все развили! А мне нравится ![]() Спасибо, Dancer, я понял идею на jsp. Я думаю, эт не составит труда и я обязательно разберусь... Но пока просто использую WMA для передачи ip, очень мало времени просто... |
Автор: javastic 21.4.2006, 10:53 |
[QUOTE=так телефон и является сервером, просто сервер в тырнете поднятый нужен для того, чтобы следить за тем, кто сейчас из пользователь стартован как сервере, чтобы можно было присоединиться к этой игре. Так как у нас IP на телефоне могут меняться каждый раз, когда мы будет регистриться как сервер, то для этого и нужен какой-то общий ресурс, на который можно будет давать информацию об IP стартованных серверов-МИДЛЕТОВ. [/QUOTE] Я делал чат через мобилу и чтобы не париться с IP (т.к. он может у одного оператора меняться у другого нет), я создавал некий UserId при запуске мидлета, а после установления коннекта с сервером передавал его, после чего в пределах одного запуска мидлета общался с сервером через мой UID ,а сервер в свою очеред отдавал именно мне все запросы которые нужны. И так с каждым клиентом. Это можно применить и при игре. А если сделать ещё и регистрацию на сервере и он сгенерирует юзеру UID и отошлёт его мидлету, то можно просто в мидлете хранить этот UID и пользоваться им каждый раз при обмене данными. И не важен какой у клиента в следующий раз будет IP, потому что пакет в любом случае доставится. |