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

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

Нужен совет по Сокетам


msoftware ©   (2003-04-09 09:10:00) 

Приветствую! Нужен дельный совет по TClientSocket и TServerSocket.
Меня не устраивает размещение серверной и клиентской частей в разных программах, поэтому клиентскую часть я размещаю в программе, а серверная у меня запускается потоком при создании формы. Дак вот рационально ли я делаю. Ведь можно было бы просто разместить на одной форме TClientSocket и TServerSocket?


Digitman   (2003-04-10 09:19:00) [1]

Да, можно.
но UDP - протокол без гарантии доставки пакетов. Кр.того имеет определенные ограничения. Учитывай это при выборе.

см. http://book.itep.ru


msoftware   (2003-04-10 08:43:00) [2]

Слухайте тогда вот что: я слышал что по протоколу UDPможно обходиться без сервера. То-есть клиент играет роль и сервера и клиента.
Источник из моей книжки "Delphi 5 Учебный курс"(С.Бобровский)


Digitman   (2003-04-10 08:39:00) [3]


> AlexMax



> Зачем пользоваться этими глючными Client/ServerSocket"ами???
>


Чушь. Никаких "глюков" нет. По кр.мере - в Д5


> Один сокет будет служить и клиентом и сервером


Тоже - чушь. Требуется как минимум 2 явно создаваемых гнезда : одно - "слушающее" серверное (+1 - неявно, в случае сервера ,см. WSAAccept()) и/или другое - клиентское


AlexMax   (2003-04-09 20:45:00) [4]

Да ваще!!! Зачем пользоваться этими глючными Client/ServerSocket"ами??? Надёжнее и универсальнее было бы написать через WinSock функции, тем более, что в отличие от многих других виндовых библиотек, для WinSock есть готовый юнит. И там, я думаю, не понадобится создавать клиента и сервера. Один сокет будет служить и клиентом и сервером.


Palladin   (2003-04-09 10:51:00) [5]


>Серверную и Клиентскую архитектуру нельзя


архитектура одна: Клиент-сервер (Карл Маркс Фридрих Энгельс это два человека, а не четыре)

У сервера свои задачи, у клиента свои. Клиент в основном обеспечивает работу с пользователем, сервер выполняет запросы клиента и возвращает данные...

и писать все в одной программе это по крайней мере идеологически не верно...


Digitman   (2003-04-09 10:51:00) [6]

ответь на простой вопрос : зачем на машине клиента (т.е. той машине, где будет работать клиентская логика) нужна еще и серверная логика ? У тебя что, какждый клиент будет осуществлять соединение с самим-собой ? А-ля "тихо сам с собою я веду беседу" ?
Классическая схема - в сети есть машина-"сервер", на которой работает серверное приложение (использующее, скажем, тот же TServerSocket), в сети есть другие машины, на каждой из которых работает клиентское приложение (TClientSocket). Клиенты на кл.машинах осуществляют коннект к серверному приложению на машине-"сервере", серверное приложение принимает запросы от удаленных клиентов, обрабатывает эти запросы и возвращает результаты обработки по индивидуальным установленным каналам связи с клиентами


msoftware   (2003-04-09 10:31:00) [7]

Digitman © (09.04.03 10:18)
Я не знаю, что ты подразумеваешь под своим "способом".

Отвечаю: Под своим способом я подразумеваю вот что:
1. Запускается эта самая прога, вместе с ним поток. В этом самом потоке создается TServerSocket. Ему указывается порт и прочие координаты.
2. Пользователь нажимает "Соедениться" и клиент соеденяется с Сервером.

Надеюсь я Нормально "разжувал" что хотел сказать.


msoftware   (2003-04-09 10:24:00) [8]

Нужно чтобы прога была понятна всем. Ведь я ориентируюсь на безграмотного юзера, который игрушку даже нормально поставить неможет. А ему ещё скажи открой это, открой то. "Нафиг тогда это надо", он скажет, "запишу ка я Аску лучше".
Может сделать по-другому:
Пользователь открывает клиентское приложение, и одновременно вместе с ним в фоновом режиме открывается другое приложение - сервер. И клиентская и серверная часть тогда окажутся отдельно.
Как вы считаете господа ?


Digitman   (2003-04-09 10:18:00) [9]


> msoftware



> Так значит мой способ не будет работать между компами?


Я не знаю, что ты подразумеваешь под своим "способом".
Есть такое понятие - "постановка задачи". Потрудись детально описать здесь то, что тебе требуется реализовать в конечном итоге. А присылать исходник непонятно чего без конкретной постановки задачи нет никакого смысла


msoftware   (2003-04-09 10:03:00) [10]

Digitman © (09.04.03 09:57)

Так значит мой способ не будет работать между компами? Просто локально оно работает. Может вместе протестируем, я пришлю исходник?


Digitman   (2003-04-09 09:57:00) [11]


> Так значит смешивать в одном приложении и Серверную и Клиентскую
> архитектуру нельзя? Я правильно вас понял?


неправильно. все зависит от конкретно поставленной задачи


msoftware   (2003-04-09 09:53:00) [12]

Так значит смешивать в одном приложении и Серверную и Клиентскую архитектуру нельзя? Я правильно вас понял?


Spartak   (2003-04-09 09:34:00) [13]

посмотри пример .../delphi/demos/internet/chat


Digitman   (2003-04-09 09:32:00) [14]

если ты сотворяешь прокси-сервер, то делай как угодно - хоть потоком хоть в design-time на форме ... что в лоб что по лбу) .. лишь бы была четкая синхронизация транспортных алгоритмов и кодовых потоков в ходе работы процесса такого прокси-приложения


Calm   (2003-04-09 09:13:00) [15]

Это нерационально.

Ты не понимаешь сути клиент-серверной архитектуры.


Наверх

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