PDA

Просмотр полной версии : Работа с сокетами


strab
09.06.2008, 06:17
Помогите разобраться. Как работать с сокетами в дельфи 7? я нашёл статьи, где рассказывют о компоненте tclientsocket, но его нет в седьмом, наверное в шестом был..

krypt3r
09.06.2008, 06:56
Смотри в сторону компонентов Indy или юзай чистый WinSock

BlackSun
09.06.2008, 12:02
Кто сказал, что в 7й делфе его нет? (TClientSocket), он просто не подключен ..
Component -> Install Packages -> Add -> /bin/dclsockets70.bpl
Появится на вкладке Internet

/Boom\
09.06.2008, 12:27
меня тоже интерисует этот вопрос.Не могли бы вы дать какойнить просто исходник где описывается каждое действие.

Fata1ex
09.06.2008, 12:32
http://sources.ru/delphi/delphi_network.shtml

0verbreaK
09.06.2008, 13:31
Лучше сразу винсок учи, в книге Фленова много примеров и исходников, где описывается как на винсок программировать, Upd, Tcp клиенты, мейлеры, файрвол, прокси.

t04
09.06.2008, 15:51
книги Фленова как раз для начинающих, но для более серьезного уровня я ничего толкового не нашел ни в одной из его книг, в основном в них материал повторяется, но не много разные примеры и применения.

Delimiter
09.06.2008, 16:08
да уж.... на асинхронных сокетах программить книги не научат!

... максимум быдлокодинг на блокирующих!

Delimiter
09.06.2008, 22:25
вот это да! оказывается уметь юзать fcntl и select (или как там оно в долфе называется) это верх мастерства

во первых WsaAsyncSelect .... во вторых это действительно так! Поскольку обработчик поступающих пакетов - это одно , а все остальное это другое и чтоб все это работало как одно целое нужно уметь !

А чтоб while-АМИ ждать приходящие пакеты , дык это из руководства для чайникоффф которые при словах коллбак функции падают в обморок!!!!

конечно эти чайники начинают совать свои блоркирующие сокеты в нитки, не считая ,что в итоге они получат намного меньше "квантов" времени(вытес.многоз.мастд я) чем обработчик находился бы в основной нитке процесса!

а иногда они и до этого не доходит а заканчивается заfreezeвшемся диалоговом окне ! Это верх их сетевого кодирования! И они удовлетворяются консолью! НУ КАК ЖИВЕНЬКАЯ КАРТИНКА!?

Delimiter
09.06.2008, 22:49
чуствуется линуксоид! 8))) ... Тибу достаточно и блокирующих сокетов! Сам под линукс использую только их, я говорил об Мастдае! Когда тысча новичков еженедельно пялится на замерзшее диалоговое окно!

!{ra!{e/\/
09.06.2008, 22:51
можно тут почитать
http://forum.sysman.ru/index.php?showtopic=12171

0verbreaK
09.06.2008, 23:15
да уж.... на асинхронных сокетах программить книги не научат!

... максимум быдлокодинг на блокирующих!

Почему же Флёнов упоминает в своей книги блокируюищие/неблокирующие сокеты, даже довольно таки подробно объясняет, что игде использовать надо.

Мне довелось изучать труды Йона Снейдера - Эффективное программирование TCP/IP, так там расписано и огромное кол-во примеров, правда ОС UNIX затронута, и она расчитана для професионалов, а с Флёнова стоит, начать тем более это книжка с кодом на делфи. Для новичка самое оно.

Delimiter
09.06.2008, 23:49
упоминание это слишком мало....

типа сначала setsockopt для многократного использования
затем WsaAsyncSelect для tcp-handshake....
потом listen затем пишем обработчик FD_ACCEPT в нем вызываем
WsaAsyncSelect для указания обработчика FD_READ и FD_CLOSE
и описываю обработчик для последних двух событий....

вот мои слова тоже скажут все только ждя уже понимающих людей

0verbreaK
10.06.2008, 01:07
упоминание это слишком мало....

А что вы хотели - это же серия глазами хакера))) В некоторых книгах встречается - хакер значит, не программист, и не нужно затргивать модели программирования,
достаточно описать инструментарий.

Сеть сейчас/прежде доступна, то есть документации море, при чем уровень её очень хороший, например статья: http://wasm.ru/article.php?article=socketbybeej, видимо не стоит читать подобные книги Фленова, професионалам, хотя там можно найти чтото интересное например: Файрвол - правда там сторонний фильтр использовался но все же хоть какоето чудо на раннем этапе развития программерской смекалки))

disasembler
10.06.2008, 13:09
используй потоки:)