| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Indy Servers/Clients |
| Автор: Newline5000 4.12.2012, 11:31 |
| Cобственно постановка задачи: Нужно чтобы с некоторого количества рабочих мест можно было обмениваться текстовыми сообщениями с одним сервером. В мемо/edit пишем, жмем send - отправляем. Сервер получает сообщение, что-то там с ним делает и шлет обратно. После чего обрывает соединение Вопрос: В Embarcadero С++ Builder XE нет компонента Server Socket и его же клиента. Его заменили Indy компонентами. Подскажите как реализуется такая схема работы? Можно ли где-то найти исходники/примеры? |
| Автор: Newline5000 4.12.2012, 13:36 | ||||
| Победил. Сделал так: Сервер:
Клиент:
Вопрос: Какого хрена кириллические символы отображаются в виде знаков вопроса? |
| Автор: feodorv 6.12.2012, 11:53 | ||
Может, локаль прописать? |
| Автор: artsb 6.12.2012, 12:13 | ||
Потому что, нужно использовать юникодные строки?
|
| Автор: Salatovec 17.12.2012, 16:19 |
Дружище, а расскажи пожалуйста, что нужно писать в Edit1->Text у клиента. Там имя хоста, но как узнать какое имя прописать? |
| Автор: Salatovec 18.12.2012, 14:52 |
В виде: 255.255.255.255 ? |
| Автор: artsb 18.12.2012, 17:49 |
Ага. Тот который у вашего сервера. |
| Автор: Salatovec 19.12.2012, 09:29 |
Так, отлично, спасибо - заработало. Но осталась проблема, как у автора темы - отсылаемое сообщение приходит на сервере не в виде ПРИВЕТ, а в виде ??????. |
| Автор: artsb 19.12.2012, 09:46 | ||
Очевидно, проблемы с кодировкой. Либо приводите клиента и сервера к общему "знаменателю" (используйте одну и туже кодировку). Либо при отправке указывайте, в какой кодировке идут данные, а на сервере проверяйте кодировку и делайте соответствующие преобразования. |
| Автор: Salatovec 19.12.2012, 14:12 | ||
artsb, а Вы можете подсказать, что за загадочный TEncoding кроется в
Я передаю туда UnicodeString, но чую, что это не верно. |
| Автор: artsb 19.12.2012, 15:49 |
| С Indy работал мало, так что, тяжело что-то подсказать. Нужно самому разбираться. Могу посоветовать такой вариант: - определитесь с кодировкой, которой будете пользоваться - отправляйте в сокет сначала длину данных (в вашем случае строки) в байтах - затем, следом отправляйте сами данные в виде массива байт - на принимающей стороне получаете размер данных в байтах - выделяете место для буфера с требуемым размером - читаете пришедшие данные |