Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2012, 10:49   #1
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию [mrim] Отправка на сервер информации по таймеру

Здравствуйте все!
Нашел исходники реализации протокола майл.ру агента, решил привести их к юзабельному виду.

Когда писал "первую версию", столкнулся с проблемой посылки пакета ping.
Примечание: согласно протоколу каждые 30 секунд на сервер должна посылаться кое-какая инфа

В то время я делал бота(он должен был тупо отвечать на сообщения) для мыла и не стал с этим париться, а просто сделал цикл типа:

Код:
while(true) {
    пакет = читатьПакет();
    if(входящееСообщение(пакет))
        ответить()

    отправитьПинг()
}
В принципе он работал(пока интернет не затупит и связь с сервом не потеряется, но это другая проблема), но как-то это страшно)))

В данный момент я решил часть этого кода скопировать, дополнить и т.п., и представить как библиотеку.
Собсно отправку пакетов я решил реализовать как класс Sender, в который с помощью метода push(Packet pack) будут добавляться пакеты и в порядке очереди отправляться (каждый след. отправляется методом sendNext() )

Для отправки пинга я вижу 2 пути:
1) засекать время, и если прошло больше ~22 сек, то в методе sendNext() отправлять пинг.
2) выделить в отдельный поток как таймер.


Собсно вопросы:
1) Какая из реализаций лучше? И если обе стрёмные, то какую другую посоветуете?
2) (теоретический) Если организовать это в потоке, то не может ли быть такой проблемы, что я один поток начнет отправлять на сервер пакет пинга, и тут второй посреди отправки влезет и начнет слать своё ? (надеюсь, понятно сформулировал)

Заранее спасибо и извините за многабукф)


UPD. Я тут подумал... А в джаве нету в либах функции как в джаваскрипте таймерской? setTimeout(func, time); как-то так кажется

Последний раз редактировалось Sna1L; 29.09.2012 в 10:53.
Sna1L вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка информации через инет GoldSteals Работа с сетью в Delphi 2 18.12.2010 17:27
Отправка данных на сервер. iGlass Работа с сетью в Delphi 2 10.09.2009 17:17
Отправка сообщения на email по таймеру! poster123 Win Api 7 14.07.2009 20:05
Отправка отсканированной информации с МФУ на эл. почту selencer Компьютерное железо 5 06.04.2009 22:31
Отправка файла на сервер kirill555 PHP 8 21.12.2007 12:51