Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ServerSocketConnection 
:(
    Опции темы
W0LF
  Дата 12.4.2006, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



я так понял, что телефон может быть сервером, кто-нидь скажет, операторы России, Украины держат эту штуку? Там просто нужен hostname, правда есть такой метод, как getLocalAddress() у интерфейса ServerSocketConnection, но он может возвращать 0.0.0.0...
Никто не сталкивался? вот для примера( может кто скажет, как энто превратить в рабочий вариант?):

SocketConnection Interface
Код

...
SocketConnection client = (SocketConnection) Connector.open("socket://" + hostname + ":" + port);
// set application-specific options on the socket. Call setSocketOption to set other options
client.setSocketOption(DELAY, 0);
client.setSocketOption(KEEPALIVE, 0);
InputStream is = client.openInputStream();
OutputStream os = client.openOutputStream();
// send something to server
os.write("some string".getBytes());
// read server response
int c = 0;
while((c = is.read()) != -1) {
   // do something with the response
}
// close streams and connection
is.close();
os.close();
client.close();
...


ServerSocketConnection Interface
Код

... // create a server to listen on port 2500
ServerSocketConnection server = (ServerSocketConnection) Connector.open("socket://:2500");
// wait for a connection
SocketConnection client = (SocketConnection) server.acceptAndOpen();
// set application-specific options on the socket;
// call setSocketOption to set other options
client.setSocketOption(DELAY, 0);
client.setSocketOption(KEEPALIVE, 0);
// open streams
DataInputStream dis = client.openDataInputStream();
DataOutputStream dos = client.openDataOutputStream();
// read client request
String result = is.readUTF();
// process request and send response
os.writeUTF(...);
// close streams and connections
is.close();
os.close();
client.close();
server.close();
...


Заранее спасибо

Это сообщение отредактировал(а) W0LF - 13.4.2006, 09:48


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
W0LF
Дата 13.4.2006, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Все, я разобрался.Если кому надо, то в WTK22 есть пример...
Кстати пробовал с Life на Jeans и обратно - работает, ток там плавающие ip, их мона каждый раз отправлять с помощью WMA, но не все телефоны держат WMA...




--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
DEMOVERSION
Дата 14.4.2006, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.10.2005

Репутация: нет
Всего: 1



А можно пример и вообще что делает прога?
PM MAIL   Вверх
Dancer
Дата 14.4.2006, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



В принципе - можно поднять сервер в тырнете, у которого будет определённый адрес, ну например: http://www.my_mobile_SSocket_switcher.ru
На этом серваке ведёшь что-то он-лайн логирования, а точнее: если кто-то захотел стать серверо, то должен прислать определённое сообщение, о том, что я такой-то такой-то (MIDlet) стал сервером и имею вот такое вот IP.
Приложение, которому нужен данный (Server-MIDlet) идёт по адресуhttp://www.my_mobile_SSocket_switcher.ru и смотрит, есть ли сейчас активные Server-MIDlet если да, то выбирает из списка нужный ему, ну или первый из списка и т.д. (думаю идея понятна)

Но если у нас телефон поддерживает возможность работы с HTTP из мидлета, то JSR-120 он точно может поддерживать smile

Хотя мой вариант имеет право на жизнь и вполне очень универсален. (ИМХО)


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
W0LF
Дата 14.4.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата(DEMOVERSION @ 14.4.2006, 09:28)
А можно пример и вообще что делает прога?

Прога - просто шашки по сети.


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
DEMOVERSION
Дата 17.4.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.10.2005

Репутация: нет
Всего: 1



я не понял, клиент коннектиться к веб-серверу или мобильнику напрямую?
если второй вариант то как? 
PM MAIL   Вверх
javastic
Дата 17.4.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



А я бы сделал через веб-сервер и всё было бы ГУД.  smile  


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
W0LF
Дата 17.4.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



К мобильнику напрямую!
а пример вот : 
http://forum.vingrad.ru/index.php?showtopi...st&p=701283
Там в SocketConnection Interface
hostname = ServerSocketConnection.getLocalAddress();
то есть на сервере нужно взять LocalAddress(getLocalAddress()) ибо он плавающий, и передать клиенту(допустим с помощью WMA)
javastic,
Для лабы в универ, которая должна использовать сокеты это вполне подойдет smile
а вот сервера я никогда не писал  smile , ток немного jsp практиковал... 


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Dancer
Дата 17.4.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



JSP - этого будет вполне достаточно, сидишь слушаешь, как только что-то тебе пришло на твою страницу, то берёшь разбираешь request, в зависимости от того, что пользователь в запросе к этой странице навыбирал (строчку запроса сформировал), в зависимости от этого делаешь ответ этому пользователю, ну и вносишь какую-то информацию в БД или ещё где ты будешь хранить записи о твоих шашечных баталиях)
Из мидлета, делаешь вызов http://www.my_site.ru/log_my_MID_server.js...гая_информация( например, сколько этот серврер будет ждать пока к нему не подключиться кто-либо, по окончанию этого таймаута он отключается, ну и много чего ещё можно нафантазировать)

в JSP разбираешь параметры, исходя из того какие параметры есть и какое они имеют значение организуешь всю логику работы. Например если есть параметр reg_as_server=true то, тот кто сейчас стучиться, он является сервером для отальных и ожидает подсоединения к себе клинетов.
Получаешь IP с которого пришёл данный запрос, и заносишь это в своё хранилище (БД, XML, текстовый файл, Hashtable в памяти приложения на сервере, etc.) 

далее другой клиент идёт на страницу, на которой можно посмотреть есть ли сервера, которые ожидают подсоединения к себе клиентов, и по нику узнать кто ожидает. http://www.my_site.ru/servers_wait.jsp
вытаскиваем из БД или где мы там храним наши здаписи, всё что касается текущих серверов, которые ожидают к себе подключения, IP, ник того кто запустил этот сервер на телефоне, возможно время когда этот сервер стартанул своё ожидание, и возомжно таймаут для ожидания, ну и так далее.
Пользователь выбирает сервак (по IP или ещё как, не важно, главное что он знает IP сервера к которому хочет сконнектиться)
Далее коннектиться и играет.
По окончанию, с сервера-МИДЛЕТА может послаться результат как закончилась игра (возможно лог ходов и т.д.) на какакую либо специально созданную jsp или же уже на имеющиеся, с определённым набором параметров. 
Далее на серваке можно организовать лист рекордов (ну и что фантазия позволит) smile

А если всё будет прикольно работать, то можно идти искать, кто такое может купить для коммерческой эксплуатации smile
 


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
javastic
Дата 18.4.2006, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Цитата

Для лабы в универ, которая должна использовать сокеты это вполне подойдет 
а вот сервера я никогда не писал   , ток немного jsp практиковал... 


Да, для практики сойдёт, а для реально работающего приложения не очень. Ну представь если ты выпустил коммерческий продукт, а им смогут пользоваться только меньшенство, а большинство удалят его со своего телефона. Ничего сложного в написании сервера нет.

Добавлено @ 09:01 
Цитата

в JSP разбираешь параметры, исходя из того какие параметры есть и какое они имеют значение организуешь всю логику работы. Например если есть параметр reg_as_server=true то, тот кто сейчас стучиться, он является сервером для отальных и ожидает подсоединения к себе клинетов.


А можно сделать так: пользователь создает игру и автоматически является сервером. =)

Добавлено @ 09:11 
Кстати, предлагаю замутить какой-нибудь такой сетевой проект.  smile 
Шашки там, крестики нолики, морской бой или ещё чего, по графике не очень сложное.  smile 

Что скажете? 


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
erka
Дата 18.4.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.7.2005

Репутация: 1
Всего: 1



Идея вообще прикольная. Замутить то можно, только вот траблы могут быть с разными мобильными операторами(IP одни реальные дают, другие не реальные).   Кстати, для тех кто хочет что-то многопользовательское писать, сразу стоит отметить, что в j2me есть неприятное ограничение по количеству открытых активных соединений smile 
PM MAIL   Вверх
Dancer
Дата 18.4.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



Цитата(javastic @  18.4.2006,  08:58 Найти цитируемый пост)
А можно сделать так: пользователь создает игру и автоматически является сервером. =)

так телефон и является сервером, просто сервер в тырнете поднятый нужен для того, чтобы следить за тем, кто сейчас из пользователь стартован как сервере, чтобы можно было присоединиться к этой игре. Так как у нас IP на телефоне могут меняться каждый раз, когда мы будет регистриться как сервер, то для этого и нужен какой-то общий ресурс, на который можно будет давать информацию об IP стартованных серверов-МИДЛЕТОВ.

Как правильно заметил erka
Цитата(erka @  18.4.2006,  11:34 Найти цитируемый пост)
траблы могут быть с разными мобильными операторами(IP одни реальные дают, другие не реальные).   
 вот это вот действительно ЖОПА!!!!
 


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
dmitriy1111
Дата 18.4.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



javastic

Сетевые игры для сотовых  - шашки , шахматы ...  smile  

Это сообщение отредактировал(а) dmitriy1111 - 18.4.2006, 18:31
PM MAIL   Вверх
javastic
Дата 19.4.2006, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



dmitriy1111, ну и что?  smile  "Велосипед не то что не надо изобретать, а нужно! Сделать его более совершенным, красивым и функциональным! Да, и седло конечно же под себя настроить. " ©Я.
Так что извини.  smile   

Это сообщение отредактировал(а) javastic - 19.4.2006, 08:44


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
dmitriy1111
Дата 19.4.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



 Конкуренция всегда была только на пользу  smile  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.1641 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.