Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по структуре чата? что лучше? 
:(
    Опции темы
Drummer
Дата 17.3.2006, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



Простите за возможно глупий вопрос(вопросы), возможно он уже обсуждался(хотя именно ответы на ети вопроси я не нашёл), но...

1) Какой протокол мне лучше использомать при написании чата(я так понял ето либо TCP либо UDP)
2) Какими компонентами (тут вопрос в чём Indi лучше TClientSockets)
3) smile Главний вопрос smile
Я так понимаю при написании чата можна использовать разние схеми:
  • На Форму ставить один компонент сервер, и один клиент(на один и тот же порт). Отправлять сообщение всем (255.255.255.255) (я видел пример такого использования на форуме)
  • Динамически создавать подключения(1 сервер, и много клиентов), сервер слушает всех, клиенти связани каждий с отдельним компютером
  • Во врямя роботы программы зделать так что бы 1 комп назна чался серваком(тогда все ему скидимают сообщения, а потом он всем отсилает(и вслучае отключения сервера, переназначать его))
И т.д.

Мне кажется лучше первый или второй способ, они найболее прости и понятны
но всё же какой способ лучше?(и для каких целей используется?)

Заранее благодарен.

PM MAIL   Вверх
vood
Дата 17.3.2006, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



1Пиши на TCP
2Зря сокеты недооцениваешь в них чат удобнее писать
3 Используй на одной форме и клиент и сервер с одним портом(клиенту адрес сервака будешь указывать если это именно чат, а не форум )


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Drummer
Дата 17.3.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



я не совсем понял
в чате моё сообщение должни увидеть все участники чата, тоесть отправлять надо всем,
но тогда высилать на 255.255.255.255 или в цикле каждому(то есть на клиенте переназначать адрес) smile

PM MAIL   Вверх
vood
Дата 17.3.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



у тебя у каждого юзера прога с чатом?
а высилать лучще циклом
Код

for i:=0 to ServerSocket1.Socket.activeconections-1 do 
ServerSocket1.Socket.Connections[i].SendText('Hi!');


Добавлено @ 11:25
к слову Drummer, такие вещи как чат лучще писать на обычных сокетах
Indy больше подходит для чисто серверных или чисто клиентских прог


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Drummer
Дата 17.3.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



Спасибо vood, но ещё извини за тупой вопрос:
как тогда иницыализировать(в смисле создать) группу подключений, а тоя частично разобрался з созданием одного подключения ,и незнаю как создавать множество?

помоги пожалуста!


PM MAIL   Вверх
vood
Дата 17.3.2006, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



У тебя ClientServer.Active должно быть true и у сервера тоже
тогда они сами соединятся


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Drummer
Дата 17.3.2006, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



vood, да нет вопрос не втомм... хотя наверно ето я тебя не понял...
откуда берётся ServerSocket1.Socket.activeconections я сам его назначаю или автоматически создается

и какой адрес прописивать (в отправке), для каждого соединения свой?(если да то как их создавать?)

и как узнать хто есть хто, к кому какое соединение?

и :-) у меня шестая делфя, где там клиентсокет? (я немогу найти:-))

Это сообщение отредактировал(а) Drummer - 17.3.2006, 11:51
PM MAIL   Вверх
vood
Дата 17.3.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



ServerSocket1.Socket.activeconections создаеться само
соединения создаються сами
по свойству RemoteIP у элемента Connections
ClientSocket на странице Internet


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Drummer
Дата 17.3.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



vood, Большое спасибо.
вопросов больше нет
smile
PM MAIL   Вверх
Rav41k
Дата 18.3.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



Я пробовал его откомпилировать, но он тоже почему то не работает. Я сначала подумал, что у меня Delphi гонит. А Пример этот съдесь http://delphixfiles.narod.ru/Source.htm
Это конечно глупо выглядит, но я не понял что такое RemoteIP, где его найти и как использовать.
Объясни пожалуйста.
PM MAIL   Вверх
vood
Дата 18.3.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



А он тут Serversocket1.socket.connections.RemoteIP
Это IP адрес подключения из массива Serversocket1.socket.connections
Его элементы - обьекты класса TCustomWINSocket(массива)


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Rav41k
Дата 18.3.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



У меня ещё вопрос: Как съделать чтобы можно было задать свой ник. Ну вроде отдельной формы Ник, Пароль. И чтобы при отправке сообщения писалось например так - "Егор: Привет!"
PM MAIL   Вверх
vood
Дата 18.3.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



пояснение: Edit1 поле куда юзер вводит ник
Edit2 поле сообщения
Button1 кнопка отправки сообщения
Код

procedure TForm1.Formcreate(sender:Tobject);
var
begin
InputQuery('Пароль','',a);
if a<>'qwer' then Form1.close;
end;
Procedure TForm1.button1click(sender:Tobject)
begin
Serversocket1.Sendtext(Edit1.Text+':'+Edit2.Text);
end;



--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Rav41k
Дата 18.3.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



С этим понятно. Спасибо.
А что такое "Массив", и я немогу найти "А он тут Serversocket1.socket.connections.RemoteIP" Вложи пожалуйста скрин. Я немогу понять где это.
PM MAIL   Вверх
vood
Дата 18.3.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Serversocket1.socket.connections.RemoteIP это свойство компонента Serversocket1
А массив-это индексированая структура данных(каждая переменная имеет свой индекс Connections[5])
Скрин не скину тк Delphi на другой винде где нет инета


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Rav41k
Дата 18.3.2006, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



Спасибо. Буду пробовать. smile

PM MAIL   Вверх
vood
Дата 18.3.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Практика-лучший способ изучения програмирования


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Демо
Дата 18.3.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(Rav41k @ 18.3.2006, 00:33 Найти цитируемый пост)
Подскажите пожалуйста линки с наглядными примерами создания чата для локальной сети.


В каталоге Delphi:
\Demos\Internet\Chat


--------------------
    
PM MAIL ICQ Skype   Вверх
Rav41k
Дата 24.3.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



Демо это же чат для инета, да и вообще он не работает. Я бы хотел посмотреть статью со скринам, чтобы все увидеть можно было, весь процесс создания.
И ещё - Вложите кто нибудь текс, того чтобы сервак определял клиента не хендлом, а по имени введенному самим клиентом.
Я съделал на одной форме и клиент и сервак. Как Vood посоветовал, но я немогу сдъделать так чтобы все участники чата видели список клиентов находящихся в чата. Вообщем я уже замучался, у меня вроде получилось, а при запуске другого клиента он не видит мое сообщение, а мне от него приходит в 2-ух экземплярах.
Помогите мне пожалуйста.
PM MAIL   Вверх
vood
Дата 25.3.2006, 04:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



покажи мне код твоего чата


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0683 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.