Привет всем!
Делаю учебную программку с Indy-компонентами.
Есть клиент и сервер. Необходимо:
1) Присоединиться к серверу
2) Передать несколько раз серверу строку текста (сервер возвращает ее длину)
3) Отсоединиться
Как сделать так, чтобы можно было присоединиться один раз к серверу и передавать во время этого коннекта сколько угодно сообщений?
Пока получается так, что при каждом сообщении надо заново присоединяться к серверу (TCPClient.Connect), т.е. если я не дисконнектюсь после ответа сервера, то клиент у меня виснет на стадии чтения возвращаемой ему информации
Заранее спасибо
P. S. Пользуюсь компонентами Indy10 (протокол TCP),но буду признателен и за советы с более ранними версиями.
Здравствуйте, Maslennikov, Вы писали:
M>Как сделать так, чтобы можно было присоединиться один раз к серверу и передавать во время этого коннекта сколько угодно сообщений?
M>Пока получается так, что при каждом сообщении надо заново присоединяться к серверу (TCPClient.Connect), т.е. если я не дисконнектюсь после ответа сервера, то клиент у меня виснет на стадии чтения возвращаемой ему информации
Сам с Indy никогда не работал (работаю с сокетами через API), но есть подозрение, что используется синхронная передача, а нужна пожалуй асинхронная. Попробуй поиграться с настройками компонентов.
Здравствуйте, Maslennikov, Вы писали:
M>Привет всем!
M>Делаю учебную программку с Indy-компонентами.
M>Есть клиент и сервер. Необходимо:
M>1) Присоединиться к серверу
M>2) Передать несколько раз серверу строку текста (сервер возвращает ее длину)
M>3) Отсоединиться
M>Как сделать так, чтобы можно было присоединиться один раз к серверу и передавать во время этого коннекта сколько угодно сообщений?
M>Пока получается так, что при каждом сообщении надо заново присоединяться к серверу (TCPClient.Connect), т.е. если я не дисконнектюсь после ответа сервера, то клиент у меня виснет на стадии чтения возвращаемой ему информации
M>Заранее спасибо
M>P. S. Пользуюсь компонентами Indy10 (протокол TCP),но буду признателен и за советы с более ранними версиями.
Когда то использовал Indy,но очень быстро решил отказаться от этой библиотеки, потому что работала она очень мягко говоря некорректно. Если вопрос использования Indy не принципиален, то советую посмотреть в сторону ICS (Internet Components Suite).
Здравствуйте, Maslennikov, Вы писали:
M>Привет всем!
M>Делаю учебную программку с Indy-компонентами.
M>Есть клиент и сервер. Необходимо:
M>1) Присоединиться к серверу
M>2) Передать несколько раз серверу строку текста (сервер возвращает ее длину)
M>3) Отсоединиться
M>Как сделать так, чтобы можно было присоединиться один раз к серверу и передавать во время этого коннекта сколько угодно сообщений?
M>Пока получается так, что при каждом сообщении надо заново присоединяться к серверу (TCPClient.Connect), т.е. если я не дисконнектюсь после ответа сервера, то клиент у меня виснет на стадии чтения возвращаемой ему информации
Значит сервер не возвращает ему то, что надо.
M>Заранее спасибо
M>P. S. Пользуюсь компонентами Indy10 (протокол TCP),но буду признателен и за советы с более ранними версиями.
В общем технология INDY сделана так, что нужно точно согласовать обмен. Обычно его вначале на листике составляют. Можно условиться в дополнительних коммандах.
... << RSDN@Home 1.2.0 alpha rev. 648>>
Здравствуйте, Maslennikov, Вы писали:
M>Привет всем!
M>Делаю учебную программку с Indy-компонентами.
M>Есть клиент и сервер. Необходимо:
M>1) Присоединиться к серверу
M>2) Передать несколько раз серверу строку текста (сервер возвращает ее длину)
M>3) Отсоединиться
M>Как сделать так, чтобы можно было присоединиться один раз к серверу и передавать во время этого коннекта сколько угодно сообщений?
M>Пока получается так, что при каждом сообщении надо заново присоединяться к серверу (TCPClient.Connect), т.е. если я не дисконнектюсь после ответа сервера, то клиент у меня виснет на стадии чтения возвращаемой ему информации
M>Заранее спасибо
M>P. S. Пользуюсь компонентами Indy10 (протокол TCP),но буду признателен и за советы с более ранними версиями.
Мой тебе совет, переходи на другие компоненты.
Так же используй (если подходят) TClientSocket, TServerSocket
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>