![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TClientSocket и TServerSocket: вопросы по принципам работы [D5, Win95/98, WinME, NT4, Win2k, WinXP]
TonnyS © (2003-03-12 15:01:00)Здравствуйте. Искал информацию по сокетам, полно вопросов/ответов/примеров типа: как передать? как сделать чат? и т.д., а ответы обычно вида: "А вот так! <пример кода>"
меня интересуют следующие вопросы:
1. TClientSocket и TServerSocket на одной машине с одним и тем же значением порта могут быть активны одновременн? т.е. безсерверный чат - программа и устанавливает и принимает подключения - возможно такое по одному и тому же порту?
т.е. на машине A TServerSocket слушает порт Port1 и тут же TClientSocket пытатся установить соединение с IP машины B по этому же порту.
2. TServerSocket: а) в чём же конкретно отличие NonBlocking и threadBlocking режимов?
б) какие потоки и сколько используются в каждом из режимов при, допустим, N соединениях? при NonBlocking эти потоки создаются автоматически? Что за ThreadCacheSize, в каком случае используется и когда может не хватить указанного в нём количества?
в) возможен ли одновременный приём данных от нескольких клиентов в режиме NonBlocking?
г) Для каких случаев рекомендуется каждый из режимов?
3. Гарантируют ли сокеты целостность данных? т.е. если я отправляю 0123456789, какая гарантия, что именно эта последовательность дойдёт (не важно, поблочно или непоблочно - имеется виду после приёма всего отправленного буфера). Т.е. собственно вопрос: стоит ли встраивать контроль CRC при передаче данных? (передача - как через локалку, так и через инет)
спасибо за внимание.
Digitman (2003-03-20 17:45:00) [1]
> вопрос: можно ли задать порт/диапазон портов на клиентской
> стороне?
Контрвопрос : зачем ? ничем это не оправдано совершенно
TonnyS (2003-03-20 17:27:00) [2]Вернёмся к нашим баранам, вопрос: подключаюсь к серверу к порту, например, 1111. В результате на сервере получаю соединение от <IP-адрес клиента>:<порт>
при этом <порт> - случайное число более 1000.
Собственно вопрос: можно ли задать порт/диапазон портов на клиентской стороне?
Polevi (2003-03-12 19:47:00) [3]>более простое обьяснение работы TServerSocket
scktcomp.pas
TonnyS (2003-03-12 19:01:00) [4]Спасибо за интересную ссылку и заданное направление поиска. Хотя, для начала, попробую поискать/поспрашивать на других ресурсах - может мне дадут более простое обьяснение работы TServerSocket (на уровне Дельфи а не структур IP-пакетов), а в дебрях сетевых протоколов буду копаться уже потом, для удовольствия :)
Digitman (2003-03-12 17:38:00) [5]вопрос № 2 тесно связан с WSAAsyncSelect() и WSAEventSelect()
вникай в подробности этих ф-ций
TonnyS (2003-03-12 17:29:00) [6]спасибо, очень интересный ресурс, часть вопросов снято. Но вопрос 2 там не освещается ни с какой стороны :)
Digitman (2003-03-12 16:26:00) [7]за целостность не волнуйся
компоненты эти используют TCP-протокол, который гаранирует доставку... опять же - тот же ресурс, топик - "протокол TCP"
для сравнения с TCP (на предмет гарантированности и целостности доставки) изучи еще топик "протокол UDP"
TonnyS (2003-03-12 16:04:00) [8]спасибо за ссылку, полезу лазить, но хоть на часть вопросов хотелось бы получить ответ :)
особенно сейчас критичный вопрос про целостность данных (3й), так как от этого зависит структура пакета (включать в него CRC или нет)
Digitman (2003-03-12 15:44:00) [9]вопросов оч.много
ответы на них потянут на солидную книгу
рекомендую изучить, например, ресурс http://book.itep.ruв разделе Winsock(2) и , одновременно взяв на вооружение исходники компонентов в модуле scktcomp.pas, изучать их, сравнивая то, что там происходит, с тем, что излагается в ресурсе
либо - задавать вопросы по одному, в порядке осознания сути