|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.01.2011, 20:12 | #1 |
Пользователь
Регистрация: 12.07.2008
Сообщений: 15
|
Возможности TServerSocket/TClientSocket
Использую пару TServerSocket/TClientSocket. Озаботился надежностью передачи. Посоветовали TIdTCP компоненты.
И все же хочется разобраться во всём самому, а не использовать готовое. Для начала, какие возможности предоставляет пара TServerSocket/TClientSocket (можно с TIdTCP для наглядности сравнить)? По какому протоколу работает? |
19.01.2011, 02:12 | #2 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,695
|
Цитата:
Цитата:
Если нужны подробности по методам, то открою секреть есть такая вещь, как справка и клавиша F1. Последний раз редактировалось p51x; 19.01.2011 в 02:16. |
||
19.01.2011, 03:08 | #3 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
UDP сокет всетаки немного иное. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
19.01.2011, 11:37 | #4 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
> Озаботился надежностью передачи. Посоветовали TIdTCP компоненты
Советчиков таких - в топку. Надежность передачи ни от того ни отдругого комплекта компонентов никак не зависит. |
19.01.2011, 11:40 | #5 |
Участник клуба
Регистрация: 23.04.2009
Сообщений: 1,058
|
сами Вы в топу.... TCP хотя бы будешь знать дошло или нет... на уровне протокола это реализовано... Учите мать часть
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
|
19.01.2011, 11:52 | #6 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
> TCP хотя бы будешь знать дошло или нет... на уровне протокола это реализовано
Угу. На уровне ТОГО ЖЕ САМОГО (!!!!!) протокола TCP, который использует и TClient/ServerSocket. Так что учить матчасть полезней будет именно тебе, чтобы впредь бредятину не нести про "пробуй INDY - в передаче по TCP он надежней чем scktcomp" |
19.01.2011, 13:52 | #7 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Подводя итог, обе реализации работают поверх TCP, т.е. обеспечивают примерно одинаковую функциональность и абсолютно одинаковую 100% надёжность передачи данных. Различие в деталях, в частности TServerSocket/TClientSocket - синхронные, Инди, честно говоря, не знаю.
Вобще, смысл использовать что-то более сложное, чем socket(), connect() и send()/recv() для TCP сокетов (и bind(), recvfrom() и sendto() для UDP сокетов) для меня весьма туманен. Если не хочется зависать в синхронных сокетах, а асинхронные поднимать лень, всегда есть select(). Инди хорош (и то с оговорками) только для протоколов типа HTTP, SMTP, SNTP, которые самому поднимать лень, а сделать надо. Для чего хорош TServerSocket/TClientSocket или TIdTCP я вобще затрудняюсь сказать. Имхо, гораздо проще разобраться с connect() и send()/receive(), чем угадывать, как именно хотели разработчики компонент предоставить ту же самую функциональность.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
19.01.2011, 15:19 | #8 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
> TServerSocket/TClientSocket - синхронные, Инди, честно говоря, не знаю
TServerSocket/TClientSocket позволяет работать с транспортом и в синхронной и в асинхронной ипостасях. Вот в Инди-то как раз искл-но синхронный транспортный механизм задействован. И тому простое объяснение - индейцы лепили его с замашкой на "кроссплатформенность" применения и масштабируемость. В результате получился глюкавый не слишком поворотливый во всех смыслах монстр, который никто в здравом уме не порекомендует использовать в "боевых" условиях. Хотя, конечно же, к надежности собственно TCP-транспорта это отношения не имеет) |
19.01.2011, 15:31 | #9 | |
Участник клуба
Регистрация: 23.04.2009
Сообщений: 1,058
|
mss мы с вами на брудершафт не пили... так что давайте придерживаться правил форума.
Во вторых тестил соединение на TServerSocket/TClientSocket и на idTCPServer/idTCPClient и хочу заметить что таком соединении Цитата:
TServerSocket/TClientSocket это цифра составляет лиш 90%.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
|
|
19.01.2011, 15:36 | #10 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> TServerSocket/TClientSocket позволяет работать с транспортом и в синхронной и в асинхронной ипостасях.
Спасибо за дополнение. Я вобще в ScktComp.pas последний раз лет 10 назад заглянул, ужаснулся и больше не открывал. Вобще, имхо, общая беда обоих реализаций — это то, что они пытаюся скрыть свою синхронность/асинхронность от разработчика, запуская внутри потоки, вызывая Synchronize() и прочие ужасы, только бы VCL не падал и сокеты не зависали. Т.е. расчитаны на домохозяек, которых обучили класть компоненты на формы, а думать в терминах мультипоточности обучить всё-равно невозможно.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
Последний раз редактировалось veniside; 19.01.2011 в 15:38. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
TClientSocket и TServerSocket | _-Re@l-_ | Работа с сетью в Delphi | 2 | 29.11.2010 16:22 |
TServerSocket и TClientSocket | grafgrial | Общие вопросы Delphi | 3 | 25.08.2010 15:15 |
TServerSocket, TClientSocket | prod87 | Работа с сетью в Delphi | 7 | 26.10.2009 22:38 |
проблема с TServerSocket и с TClientSocket | DOLBY | Работа с сетью в Delphi | 56 | 14.01.2008 16:12 |