Форум: "Сети";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
ВнизПростой вопросик Найти похожие ветки
← →
Jeck (2002-05-27 17:48) [0]TServerSocket TClientSocket
Приконнектились. Связь разорволась. Потом сного приконнектились. Делаем сенд, не работает. 8( (пока коннект, дисконнект сного не сделаю) Как это устранить?
← →
Song (2002-05-27 17:52) [1]А вот это поподробней и с кодом "Потом сного приконнектились".
← →
Jeck (2002-05-27 18:10) [2]Да тут и код не нужен. Жмем кнопку коннект... Короче вызывается Start, при нажатии дисконнект вызывается Stop
__fastcall TCSocket::TCSocket(TNMClient *NMOwner)
: TAdapter(NMOwner)
{
pSocket = new TClientSocket(NULL);
pSocket->Active = false;
pSocket->ClientType = ctNonBlocking;
pSocket->Port = SOCKET_PORT;
pSocket->OnRead = Receive;
pSocket->OnError = Error;
}
//---------------------------------------------------------------------------
__fastcall TCSocket::~TCSocket()
{
delete pSocket;
}
//---------------------------------------------------------------------------
void __fastcall TCSocket::Start()
{
pSocket->Host = NMOwner->sServerName; //
if(!pSocket->Active)
pSocket->Active = true;
}
//---------------------------------------------------------------------------
void __fastcall TCSocket::Stop()
{
if(pSocket->Active)
pSocket->Active = false;}
//---------------------------------------------------------------------------
Просто не могу понять, почему SendStream отказывается отправлять.
← →
Song (2002-05-27 18:37) [3]Может просто не успевает сконнектиться сделай задержечку хотя TApplication.ProcessMessages, а лучше цикл по свойству Active пока True не будет.
← →
Jeck (2002-05-27 19:06) [4]Так самое смешное, что OnClientConnect срабатывает, а SendStream на клиенте не отправляет, пока не нажму дисконнект и сного коннект. Так и не просек в чем фишка 8(
Ладно, тогда такой вопрос. С клиентом разорволась связь, но инфа о нем остается, т.е. его connect[i]->Handle остается.
Для проверки, что связь не разорвана, я ставлю таймер на 15мин, он вызывает функцию которая шлет всем активным клиентам сообщение, если приходит ответ, то клиент активен иначе связь была некорректно прервана, и функция запускает другой таймер, сек на 15, в течении которых должен прийти ответ. Предложите, пожалуйста, другой способ проверки, что клиент активен, а не отвалился.
← →
ole (2002-05-28 09:54) [5]Мне тоже было бы интересно узнать другой вариант. :)
Если не ошибаюсь по этой темке уже говорили, но договорились тока до таймаута. Наверняка ВинСоккет знает, что синхронизация с удаленным клиентом нарушена, но почему-то не дает возможности узнать об этом своими Евентами... :(
Млин, если не ошибаюсь... что-то такое типа CheckConnection было... надо посмотреть...
← →
ole (2002-05-28 09:57) [6]Мне тоже было бы интересно узнать другой вариант. :)
Если не ошибаюсь по этой темке уже говорили, но договорились тока до таймаута. Наверняка ВинСоккет знает, что синхронизация с удаленным клиентом нарушена, но почему-то не дает возможности узнать об этом своими Евентами... :(
Млин, если не ошибаюсь... что-то такое типа CheckConnection было... надо посмотреть...
Еще предложение по текущему вопросу - не отправляй клиенту запрос, пусть клиент сам отправляет синхронизирующие сообщения!!!
Скажем раз в 15 сек. Если ты пытался создавать чат в скриптах - там тот же принцип. Клиент подключен пока у него время последнего опроса не менее ..... скольки-нить...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c