Indy--компоненты
От: Maslennikov Украина  
Дата: 06.07.06 20:38
Оценка:
Привет всем!
Делаю учебную программку с Indy-компонентами.
Есть клиент и сервер. Необходимо:
1) Присоединиться к серверу
2) Передать несколько раз серверу строку текста (сервер возвращает ее длину)
3) Отсоединиться
Как сделать так, чтобы можно было присоединиться один раз к серверу и передавать во время этого коннекта сколько угодно сообщений?
Пока получается так, что при каждом сообщении надо заново присоединяться к серверу (TCPClient.Connect), т.е. если я не дисконнектюсь после ответа сервера, то клиент у меня виснет на стадии чтения возвращаемой ему информации
Заранее спасибо
P. S. Пользуюсь компонентами Indy10 (протокол TCP),но буду признателен и за советы с более ранними версиями.
Re: Indy--компоненты
От: ak_miass Россия  
Дата: 07.07.06 03:53
Оценка:
Здравствуйте, Maslennikov, Вы писали:

M>Как сделать так, чтобы можно было присоединиться один раз к серверу и передавать во время этого коннекта сколько угодно сообщений?

M>Пока получается так, что при каждом сообщении надо заново присоединяться к серверу (TCPClient.Connect), т.е. если я не дисконнектюсь после ответа сервера, то клиент у меня виснет на стадии чтения возвращаемой ему информации

Сам с Indy никогда не работал (работаю с сокетами через API), но есть подозрение, что используется синхронная передача, а нужна пожалуй асинхронная. Попробуй поиграться с настройками компонентов.
Re: Indy--компоненты
От: delphinchik Россия  
Дата: 07.07.06 06:55
Оценка:
Здравствуйте, 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).
Re: Indy--компоненты
От: OdesitVadim Украина  
Дата: 15.07.06 12:20
Оценка:
Здравствуйте, 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>>
Re: Indy--компоненты
От: dkotov  
Дата: 18.07.06 09:47
Оценка:
Здравствуйте, 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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.