![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Доброго времени суток всем! Помогите решить проблему. Задача стоит такая: написать небольшой протокол обмена информацией между клиентом и сервером
Значит так сервер занимается отправкой сообщений смс. Он принимает от клиента по сокету служебное слово DELIVERYSTART после чего должен принять список получателей сообщения каждый получатель идет командой RECIPIENT и само сообщение по команде MESSAGE. Завершается передача командой DELIVERYEND. Так вот у меня вопрос как сделать так чтобы гарантировать корректную обработку ошибки в случае неполной передачи и можно ли передать список получателей как обьект скажем ArrayList тот же самый. И самое главное как организовать на клиенте все эти функции то есть взаимодействие с сервером. В принципе я понимаю как это сделать но я не уверен правильно ли , буду рад любой помощи, заранее спасибо. Здесь привожу фрагмент сервера
-------------------- The truth is out there |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Я бы попробовал передавать в виде XML - пусть немного накладнее, зато можно гарантировать, что если уж документ передан, то надежно все передано.
|
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Помойму проще не разрабатывать то что есть...
Вы уже в своем коде использовали часть SMPP протокола, проще его полностью реализовать.. www.isms.ru, посмотрите, если я про то. -------------------- Нехорошо блин!!! |
|||
|
||||
| jManiak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 6.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Ну можно каким-нибудь алгоритмом генерировать контрольную сумму сообщения.
И на другой стороне генерировать такой же checksum, после чего сравнивать их. Если не равно одно другому, то пересылать заново. |
|||
|
||||
| niasilil |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
Можно, конечно, только смысла особого нет - TCP же. -------------------- SCJP 5.0, SCJD |
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Если вам надо массовую рассылку SMS,
прочитайте спецификацию SMPP,а именно SubmitMultiSM, и не надо будет самому что то делать, надо будет просто подставить готовые классы в нужном вам итоге... -------------------- Нехорошо блин!!! |
|||
|
||||
| jManiak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 6.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Да, знаю я несколько систем, которые тоже обмениваются данными через tcp... Вы не поверите, но процент ошибочных данных примерно равен 30%, хотя в целом от точки отправления до точки назначения не более 10% потерь больших пакетов, точно таких же как пересылает эта система. Так что tcp - это как выяснилось еще не гарантия доставки данных. Я бы не поленился и написал проверку чексама... |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
TCP/IP не гарантирует доставки всех данных. Гарантируется лишь целостность тех данных, которые дошли. -------------------- ![]() ![]() |
|||
|
||||
| niasilil |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
jManiak, можно подробнее про эти несколько систем? почему теряется 30% данных и где?
-------------------- SCJP 5.0, SCJD |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
barin_Student,
А вы можете подсказать где этот класс взять или привести простой пример процедуры для посылки смс с проверкой ее доставки? Огромное спасибо, очень надо -------------------- The truth is out there |
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Есть библиотека org.smpp.*; и еще много разных, вот привиду пример работы как по протоколу это делается:
В этой библиотеке есть команда Bind*// посылается запрос на установление соединения с SMPP сервером.. для посылки сообщения используются восновном DeliverSM и SubmitSM, для массовой рассылки используется SubmitMultiSM.. В DeliverSM есть поле (не помню точно как ) ,отвечающее за ответ о доставке.. Вот маленький пример как примерно работать по SMPP протоколу с Опсос либо просто SMPP серверами:
Добавлено @ 12:01 Да не всегда совпадает отчет о доставке с реальной доставкой, впринципе вы можете пока ограничется отчетом о получение команды доставки, вот есть начатая тема , там и полностью доки есть о SMPP: http://www.isms.ru/faq.shtml?nameact=view&...=3&id2=1297 Добавлено через 8 минут и 13 секунд В примере есть граматические ошибки , но не в этом суть... Вы мне расскажите что дословно вам надо, кому вы посылаете сообщения ? Зачем вам отчет о доставке?(Хотя глупый вопрос).. И почему вы обрабатывали слова? Это сообщение отредактировал(а) barin_Student - 9.1.2008, 12:02 -------------------- Нехорошо блин!!! |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
barin_Student,
А вы не из ЦРУ? Система такая: есть электронный магазин и он отсылает клиентам смс о сделанных заказах, о событиях если заказ пришел и т д, я сделал на яве смс центр который собирает информацию от магазина об смс, обрабатывает ее и посылает смс клиентам. Просто магазин не мой и все очень сложно я просто побоялся интегрировать это все в магазин. Вот и всё. А как просто послать смс толкового примера я не нашел я пользовался smppapi.sourceforge.net там в юзергейте это есть но ниче толкового не получилось а сроки поджимают поэтому и хотелось где то найти более менее рабочий пример посылки смс. Буду очень рад если у меня получится сделать рабочий модуль для этого) -------------------- The truth is out there |
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
http://www.koders.com/java/fidF86298CF6D3D...F9C2D05759.aspx
простой пример, если вам от магазина приходит просто текст который вам надо передать и куда(номер), а вы уже должны передать при помощи операторов СМС , то вам надо практически полностью делать сам протокол , там есть пингация и т.п. , за день вы это не решите)) -------------------- Нехорошо блин!!! |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
barin_Student,
Нет просто вот попытаюсь так сказать: надо послать просто через интернет послать смс на мобилу, не через мобилу а через смпп интернет протокол. Неужели так сложно написать минимальный пример для этого? Мне казалось это уже давно решено -------------------- The truth is out there |
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Возмите тот пример по последней ссылке , тот метод что есть Sumbit(), это и есть посылка смс..
не делал по Http , а если при помощи Опсос то это ко мне.. Я просто не вижу сложности разобрать тот пример, максимально простой.. -------------------- Нехорошо блин!!! |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
barin_Student,
так да не сложно я про то что не понял вас о сложности через опсос щас все понятно. Кстати а отправка через смпп протокол это же и есть через шттп? То есть человек заключает контракт с провом тот дает ему логин пароль для доступа к смпп и уже через этот протокол идет отправка смс по тарифам за одно смс. Я правильно понимаю? Добавлено через 25 секунд То есть просто пров предоставляет интернет канал для отправки смс -------------------- The truth is out there |
|||
|
||||
| jManiak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 6.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Система управления финансами уровня города. т.е. Написана похоже на дельфи, но не уверен. Опять же там есть web-интерфейс на jsp. Пробовали проверять на каком именно уровне теряются данные, но отслеживание tcpdump'ом особо ничего не дало, при загрузке программы особых простоев не было, ничего странного на вид. Никаких сервисных программ система не предусматривает, так что отследить кто (сервер или коиент) от кого ждет какие данные тоже не представляется возможным. Разработчики всего этого безобразия говорят да, есть такой косяк и разводят руками. Да кстати, еще не сказал... часть данных передается по tcp протоколу, а часть по smtp, причем большая по smtp(но суть-то все равно та же... в результате же tcp...). т.е. часто бывает так: программа запустилась, но многие функции вылетают с ошибкой, т.к. некоторые данные получается пришли ошибочные(скорее неполные). |
|||
|
||||
| niasilil |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
Интересно. Вобщем да, с сетевыми протоколами глюки ловить очень сложно. Наверное, ты прав, лучше перебдеть, чем недобдеть.
Это сообщение отредактировал(а) niasilil - 9.1.2008, 20:01 -------------------- SCJP 5.0, SCJD |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Кстати а чем отличаются синхронный и синхронный передатчики смс? Какой лучшк использовать?
-------------------- The truth is out there |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
лучше синхронный Синхронный - запустил, дождался ответа, обработал, пошёл дальше. Асинхронный - запустил, пошёл дальше. Пришёл ответ - обработал. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Синхронный лучше, глюков меньше...
По сути вы по паролю и логину на определенный хост и порт , посылаете команду, например BindTransceiver()(здесь и указывается пароль , логин, а так же возможно systemId(ваше имя), эта команда подключает вас к СМСЦ как приемо-передатчик), на эту команду он посылает BindTransceiverResp()? надо посмотреть поле CommandStatus, если = 0 , значит вы уже имеете возможность посылать СМСки, они называются : DeliverSM, SubmitSM, QuerySM,DataSM и есть массавая рассылка SubmitMulti(). На все команды шлецца Response что тебе на твой Request , что СМСЦ на его Request. Так же СМСЦ постоянно посылает EnquireLink() - производит пингацию, не послал EnquireLinkResp в ответ , он (СМСЦ) отключит коннект. Для завершения сессии посылается команда Unbind(). -------------------- Нехорошо блин!!! |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |