Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
6-24146
K-Sergey
2002-05-28 06:46
2002.08.08
Как проверить Соединение с интернетом.....?


4-24282
IIS
2002-05-31 11:35
2002.08.08
Как програмно раздавать права на реестр?


1-24043
MaxSit
2002-07-25 17:58
2002.08.08
Связь с COM-портом по локальной сети.


6-24155
niko4615
2002-05-29 10:28
2002.08.08
URL


3-23922
_dron_
2002-07-18 11:12
2002.08.08
Проблема с выборкой по дате





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский