Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TSocketClient и TSocketServer работа с потоками


Страницы:   1 2 3

Vladimir ©   (2009-03-01 10:27:00) 

Доброго времени суток всем! Заранее извиняюсь если данная тема уже поднималась, но в поиске ответа на свой вопрос я так и не нашел. Требуется написать клиент-серверное приложение. В данный момент написал пробные клиент и сервер на SocketClient и SocketServer соответсвенно работающие в синхронном режиме. Подскажите пожалуйста каким образом  организовать их работу в асинхронном режиме, чтобы сервер одновременно обслуживал несколько клиентов! И ещё есть такая проблема при посылке текста через SendText на сервер приходят иероглифы, причем  это только на Windows Vista, на Windows XP все работало нормально. Использую Delphi 2009. Из-за чего это может быть? Заранее спасибо.


Empleado   (2009-03-03 12:29:00) [41]


> А как можно с этим разобраться? чтоб текст нормальный приходил?

Например, отправлять Уникод и принимать Уникод.

Прочитать в хелпе об использовании Unicode в D2009. Там подробно написано, с примерами, как работать со строками.
Не использовать SendText, a SendBuf, например, либо TWinSocketStream.Read/Write.
При чтении из сокета, преобразовывать полученное в Unicode. Например с помощью класса TEncoding.Unicode.GetString [или же StringOf в случае telnet].


Сергей М.   (2009-03-03 12:27:00) [42]


> Vladimir   (03.03.09 12:09) [9]


Что ты послал, то и получишь.
Данные при их транспортировке под управлением TCP доставляются в гарантированно неизменном виде.


Vladimir   (2009-03-03 12:09:00) [43]


> Из-за Уникод?

А как можно с этим разобраться? чтоб текст нормальный приходил?


Empleado   (2009-03-02 12:32:00) [44]


> И из-за чего может быть проблема с SendText?

Из-за Уникод?


Slym   (2009-03-02 05:32:00) [45]

зачем далеко ходить? на этом форуме недалече второй страницы
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1227604925&n=4


Сергей М.   (2009-03-01 13:14:00) [46]

Вот не ахти какой, но достаточно показательный пример:

http://www.delphisources.ru/pages/faq/base/tserversocket.html


Vladimir   (2009-03-01 13:07:00) [47]

Сергей, видимо мы с вами друг друга немного не понимаем. Вы не могли бы выложить код самого простого многопоточного сервера и сделать пометки в тех местах где поток создаеться, где можно проделывать какие-либо действия с клиентом(принимать от него данные, посылать ему данные) и где поток уничтожаеться. Может быть тогда у меня получиться разобраться. И из-за чего может быть проблема с SendText?


Сергей М.   (2009-03-01 12:53:00) [48]


> Но я и спрашиваю каким образом организовать работу сервера
> в режиме stThreadBlocking


Это и есть синхронныйрежим. Только не самого компонента, а сокетов, которые он создает и использует в ходе работы.


> для каждого клиента надо создавать отдельный поток, а когда
> клиент отключиться его надо уничтожать


TServerSocket все это делает сам


Vladimir   (2009-03-01 12:48:00) [49]

Спасибо конечно)) Но я и спрашиваю каким образом организовать работу сервера в режиме stThreadBlocking. Ведь для каждого клиента надо создавать отдельный поток, а когда клиент отключиться его надо уничтожать и т.д.


Сергей М.   (2009-03-01 12:42:00) [50]

Режим работы ClientSocket м.б. любым и никаким образом не каксается режима работы ServerSocket


Сергей М.   (2009-03-01 12:30:00) [51]

SocketServer в любомрежиме способен обслуживать более одного клиента.
В режиме stNonBlocking обслуживание всех клиентов последовательное в одном потоке, в режиме stThreadBlocking каждое активное кл.соединение ужеобслуживается в отдельном потоке.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо