![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| TyVik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.10.2005 Репутация: нет Всего: нет |
Задача - создать проги (клиент+сервер) для чата (типа ICQ, но всё должно быть своим). Общение будет происходить только с телефона на телефон. Серверная часть должна быть написана на скриптовых языках (повесить демона мне просто не позволит хостер).
Собственно вопрос - возможно ли такое? |
|||
|
||||
| Dancer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
Если с телефона на телефон, тогда нахрена тебе сервер?
Хотя, наверное для того чтобы узнавать IP того с кем нужно делать сессию соединения. Ну, скрипт на сервере очень простой вешаешь, заходим на сервак с мобилки, регистримся, мол я Василий Пупкин. На серваке запоминаем что пользователь Василий Пупкин сейчас активен, и сохраняем IP адресс с которого Василий стукнулся к серверу. На серваке так же должен быть скрип получить всех пользователей сервера (хотя в последсвии его можно немного обыграть и выдавать лишь список пользователей, с которыми установлены контакты (но это уже пусть будет второй этап) сначала сделай всех) Получили пользователей, смотрим что Василий Пупкин сейчас он-лайн, делаем с ним соединение как ServerSocket("socket://"+то_что_получили_от_сервера), то есть IP Васин и порт, на котором он слушает пакеты от сервера. После того как мы смогли создать сокет, шлём пакеты Васи. Одно маленькое дополнение, необходимо будет разработать собственный протокол общения клиента с сервером и клиента с клиентом. Что-то вроде префикса от кого идёт инфа, ID-команды (ну, или что-то там: текст, сообщение от сервера, присоединение клиента и т.д.) Скрипт ведёт xml файлик, ну или в любом другом формате (как тебе больше нравиться), в этом файлике будут находиться активные клиенты, и плюс ещё отдельный файлик держать, где будет база всех клиентов. При дисконнекте пользователя от сервера из файлика активных пользователь удаляется, при входе - добавляется. Главное правильно разработать концепцию, а ? и после этого кучу всякой гадости написать, ещё никто не отменял. ну, пусть будет так ?command=login&user=Vasiliy&psw=111 - это будет заход на сервак ?command=senText&ToUser=Vasiliy_freand&FromUser=Vasily&Text=250_simbols (ну, это я грубо взял 250 символов, но ограничение сделать можно, причём пользователь с телефона будет писать столько сколько ему будет нужно, а мидлет сам пусть делит символы (и если нужна будет склейка, то можно ввести новую команду что-то вроде sendText+) и будет происходить склейка до тех пор, пока не придёт команда sendText принимающий мидлет будет так же получать частями текс (далее хочешь частями отобраджай, хочешь записывай этот текс хоть в файловую систему, хоть в RMS, хоть просто храним в какой нить переменной; это уже будет зависеть от тебя самого и от того как ты захочешь это организовывать) ?command=JoinUser_request&userName=newVasiliy_freand&FromUser=Vasily ?command=JoinUser_accept&ToUser=Vasily?FromUser=newVasiliy_freand Думаю, в этом ничего не будет сложного. Если будут вопросы могу обсудить мылом, а хотя наверное лучше здесь, пусть люди видят, может быть чего лучше ещё присоветуют. Добавлено @ 17:55 Да, кстати, поищи поиском в интернете, я уже где-то даже встречас мидлеты, которые что-то вроде ICQ делают, и чат через bluetooth правда, но всё равно, думаю будет полезно. Совсем не давно на что-то похожее натыкался, но линков точно не осталось, зайди на googl там найдёшь. Это сообщение отредактировал(а) Dancer - 16.11.2005, 17:56 -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
| javastic |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1214 Регистрация: 18.3.2005 Где: St.Petersburg Репутация: 19 Всего: 27 |
Dancer, ну ты молоток, почти ТЗ написал. =)
5 баллов. Хочу поделиться. Я тоже когда то делал простой чат. Клиент - мидлет в котором задаётся логин/пароль, регистрация на сервере, вход на сервер, получение сообщений, передача сообщений. Сервер - база на ms access для сообщений и настроек пользователя , asp скрипты: опработки регистрации, входа пользователя, проверки новых сообщений, удаление прочитанных из базы, добавления сообщения. TyVik, в общем это не сложно делай всё последовательно и минимум наворотов, потом если что доработаешь. -------------------- 01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp |
|||
|
||||
| TyVik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.10.2005 Репутация: нет Всего: нет |
Да, спасибо большое - помог всё изложить последовательно
Вот только надо сделать так, чтоб сообщения шли через сервер :/ Да, ещё проблема - шлюз МТС - он сам распределяет что кому куда посылать? Просто с другом очень долго спорили... |
|||
|
||||
| javastic |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1214 Регистрация: 18.3.2005 Где: St.Petersburg Репутация: 19 Всего: 27 |
Если ты будешь пользоваться отсылкой по IP то не факт что у вас будут разные адреса. Во внутренней сети конечно разные. Теоретически должен перенаправлять пакеты без проблем, а что у них там и как не знаю.
Я делал чат без использования IP, а пользовался исключительно своим идентификатором. НАпример после того как ты залогинился, сервак автомат генерит тебе некий UID и передаёт обратно твоему приложению, ты же в свою очередь когда будешь передавать свои сообщения или проверять новые будешь выдавать свой UID, а сервак будет сравнивать, если твой UID будет соответствовать тому что на твою учётную запись настроено, то это ты, если нет, то потребует перелогиниться. В общем как работает любой сервер с веб-браузером, в общем как аналог сессий. Это сообщение отредактировал(а) javastic - 18.11.2005, 10:33 -------------------- 01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp |
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |