![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужен совет по Сокетам
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]Это нерационально.
Ты не понимаешь сути клиент-серверной архитектуры.