Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2015, 19:46   #1
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию Комнаты для чата

Ребят помогите сделать комнаты для чата(выдавались с сервера) и отправку личных сообщений.Ничего подобного не нашел!На данный момент есть только вот этот кусок )))
Код:
Клиент

var
  Form1: TForm1;
  Name: String;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientSocket1.Socket.SendText(Name + ': ' + Edit1.Text);
  Edit1.Clear;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
var
  Mas: String;
begin
  Mas:= Socket.ReceiveText;
  Memo1.Lines.Add(Mas);
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = 13 then
  begin
    Button1.Click;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Name:= InputBox('Введите имя пользователя','Логин: ','Пользователь1');
  ClientSocket1.Port:= 28015;
  ClientSocket1.Host:= '192.168.1.38';
  ClientSocket1.Active:= True;
end;



Сервер
Код:
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ServerSocket1.Port:= 28015;
  ServerSocket1.Active:= True;
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Connected: ' + Socket.RemoteAddress + ';');
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Disconnected: ' + Socket.RemoteAddress + ';');
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  I: Integer;
  Mas: String;
begin
  Mas:= Socket.ReceiveText;
  Memo1.Lines.Add('Say ' + Mas + ';');
  for I := 0 to ServerSocket1.Socket.ActiveConnections -1 do
  begin
    ServerSocket1.Socket.Connections[I].SendText(Mas);
  end;
end;

Последний раз редактировалось Stilet; 16.10.2015 в 18:28.
mitiay вне форума Ответить с цитированием
Старый 15.10.2015, 20:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну а чем сей код тебя не устроил?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.10.2015, 06:38   #3
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну а чем сей код тебя не устроил?
Код нормальный,только нужно чтоб бы были комнаты чата допустим "общая" "приватная"
mitiay вне форума Ответить с цитированием
Старый 16.10.2015, 07:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А у тебя уже сделан список чатлан?
Программа твоя работает со списком подключенных или только точка-точка?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.10.2015, 07:04   #5
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А у тебя уже сделан список чатлан?
Программа твоя работает со списком подключенных или только точка-точка?
Да работает со списком пользователей(кто в чате)
begin
Memo1.Lines.Add('Connected: ' + Socket.RemoteAddress + ';');
end;

Последний раз редактировалось mitiay; 16.10.2015 в 07:11.
mitiay вне форума Ответить с цитированием
Старый 16.10.2015, 08:25   #6
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

С отправкой личный сообщений разобрался а вот с комнатами нет (((
mitiay вне форума Ответить с цитированием
Старый 16.10.2015, 10:30   #7
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Голову уже поломал!Для каждой комнаты запускать отдельный сервер думаю глупо... То есть нужно както разбить один сервер на несколько как я понимаю... Ребят подскажите!!!
mitiay вне форума Ответить с цитированием
Старый 16.10.2015, 13:56   #8
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Удалите топик
mitiay вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вытяжка для ванной комнаты на AVR tiny2313. С.М.С Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 18 30.08.2011 16:30
Excel - Создать в Excel таблицу для расчета расхода материала для покраски пола комнаты Дашкаа Помощь студентам 2 20.06.2011 15:44
Вычисление количества рулонов обоев для поклейки комнаты Golovastik Общие вопросы C/C++ 5 17.07.2009 11:50
Админка для чата eldar PHP 0 07.05.2009 20:19