![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
![]()
Приветствую!
Помогите пожалуйста с проблемой! Клиент подключается к серверу. В обычном режиме проходит рукопожатие, когда предполагается что данные точно есть. Затем сервер переключает режим сокета: Код:
Если сокет выбрался, значит в нем что-то есть и можно получить. У меня всегда посылаются маленький рабор данных, максимум 44 байта. Обычно 14-18 байт, поэтому, считаю что, если что-то пришло - значит это наш пакет, посланный клиентом. Код:
То клиент виснет на посылке сообщения, то виснет на приеме сообщения-ответа. То вроде как отправилось, но на клиент ничего не пришло. То вроде как пришло, пакет читается, но ID всегда 0. С сокетами последний раз работал полтора года назад, тогда все шло все гладко. Что я делаю не так? Проект должен был еще вчера сдавать, но просидел весь вечер и ночь с этими "дырками". Может быть как-то по-другому сделать надо? Все это нужно для межпроцессного взаимодействия, сокеты выбрал лучшим вариантом. В процессе идет работа с устройством, бывает что, иногда, процесс виснет наглухо и его надо перезапускать. Именно поэтому, решил каждое устройство выделить в отдельном процессе - повиснет и бог с ним, главное что сервер-хост жив-здоров и может штатно перезапустить. А я залип с этими сокетами. P.S. 3 параметр в select добавил недавно, до этого было nil - тоже особо не помогало. В клиенте тоже пытался делать так: Код:
Заранее, спасибо! |
![]() |
![]() |
![]() |
#2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
И ты это принимаешь в цикле?
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
![]() |
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А я даже не знаю... Сам такую защиту на свои проги не вешал.
Я принимаю пакеты в цикле, но у меня кол-во байт каждого пакета передается заранее, поэтому я знаю когда и сколько считывать из буфера.
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
![]() Цитата:
Когда то давно я писал бота для одной из онлайн игрушек, там использовался Netty протокол для создания пакетов. Написал класс, втянулся, понравилось. Код:
Код:
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверить соединение с сокетом | Aleksandr | Работа с сетью в Delphi | 1 | 24.11.2013 10:41 |
Проблема с Сокетом(открытие порта) | karimchik666 | C/C++ Сетевое программирование | 1 | 26.05.2011 15:33 |
Отослать необъявленый массив сокетом | Johnson | Работа с сетью в Delphi | 1 | 27.12.2010 08:01 |
как сделать с сокетом | cargo29 | Общие вопросы Delphi | 4 | 20.12.2010 22:02 |