Чат на делфи 6
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Чат на делфи 6 - 2009-03-04 20:25:26.210000
|
|
|
Мимо_шел
Сообщений: 11
Оценки: 0
Присоединился: 2008-12-20 16:08:44.566666
|
Здравствуйте. Перейду сразу к делу. Как можно сделать так, чтобы при соединение клиента к серверу, имя юзера заносилось в список пользавателей( в компанент memo). Вот собственно сам листинг клиента: unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;
type
TClientForm = class(TForm)
Client: TClientSocket;
Ipedit: TEdit;
GO: TButton;
NameEdit: TEdit;
Log: TMemo;
MsgEdit: TEdit;
Send: TButton;
memo1: TMemo;
procedure GOClick(Sender: TObject);
procedure SendClick(Sender: TObject);
procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure MsgEditKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ClientForm: TClientForm;
Ip:String; //обьявление переменных
Msg:String;
Name:String;
mes:string;
e:integer;
sendname:string;//переменная для передачи имени в компанент мемо
implementation
{$R *.dfm}
procedure TClientForm.GOClick(Sender: TObject);
begin
Ip:=ipedit.Text; //тут я думаю все ясно
Client.Host:=ip;
Client.Active:=true;
sendname:=nameedit.Text; //имя пользователя равно имени введенного в неймэдит
Client.Socket.SendText(sendname+':');//передача текста (имени)
end;
procedure TClientForm.SendClick(Sender: TObject);
begin
Msg:=Msgedit.Text;
name:=nameedit.Text;
client.Socket.SendText(name+': '+Msg);
msgedit.text:='';
end;
procedure TClientForm.ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
mes:=socket.ReceiveText;
Log.Lines.add(mes);//добавление полученного сообщения в мемо (это работает)
sendname:=socket.ReceiveText;//тут я пытался проделать тоже, что и с переменой mes
memo1.Lines.Add(sendname); //но не получилось)
end;
procedure TClientForm.MsgEditKeyPress(Sender: TObject; var Key: Char);
begin
case key of
chr(13):send.click();
end;
end;
end.
Ну и листинг сервака в дагонку:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;
type
TServerForm = class(TForm)
server: TServerSocket;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure serverClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure serverAccept(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ServerForm: TServerForm;
Mes:string;
I:integer;
implementation
{$R *.dfm}
procedure TServerForm.Button1Click(Sender: TObject);
begin
Server.Active:=true;
end;
procedure TServerForm.Button2Click(Sender: TObject);
begin
Server.Active:=false;
end;
procedure TServerForm.serverClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Mes:=Socket.ReceiveText;
for I:= 0 to Server.Socket.ActiveConnections -1 do
begin
Server.Socket.Connections[i].SendText(mes) ;
end;
end;
procedure TServerForm.serverAccept(Sender: TObject;
Socket: TCustomWinSocket);
begin
end;
end. P.s. сорре за столь длинный пост[&:] //Используйте тег [c ode] //FriLL
|
|
|
RE: Чат на делфи 6 - 2009-03-04 20:38:15.680000
|
|
|
unconnected2
Сообщений: 332
Оценки: 0
Присоединился: 2009-01-16 17:56:12.400000
|
procedure TClientForm.ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
[b]mes:=socket.ReceiveText; [/b]
Log.Lines.add(mes);//добавление полученного сообщения в мемо (это работает)
[b]sendname:=socket.ReceiveText;//тут я пытался проделать тоже, что и с переменой mes [/b]
memo1.Lines.Add(sendname); //но не получилось)
end; зачем два раза присваивать? Просто memo1.Lines.Add(mes);, там же одно и то же
|
|
|
RE: Чат на делфи 6 - 2009-03-04 22:48:42.003333
|
|
|
Мимо_шел
Сообщений: 11
Оценки: 0
Присоединился: 2008-12-20 16:08:44.566666
|
я не два раза присвоил.и там разные)))
|
|
|
RE: Чат на делфи 6 - 2009-03-04 22:53:19.056666
|
|
|
unconnected2
Сообщений: 332
Оценки: 0
Присоединился: 2009-01-16 17:56:12.400000
|
Да что ты:) Ты хоть понял, что это за событие вообще, а? Или по принципу типа : сначала шлю имя, присваиваю его одной переменной, потом шлю фамилию, присваиваю его другой, да?
|
|
|
RE: Чат на делфи 6 - 2009-03-04 22:56:50.923333
|
|
|
Мимо_шел
Сообщений: 11
Оценки: 0
Присоединился: 2008-12-20 16:08:44.566666
|
хм.. я не понел..поподробней.)тогда)
|
|
|
RE: Чат на делфи 6 - 2009-03-04 23:00:59.480000
|
|
|
unconnected2
Сообщений: 332
Оценки: 0
Присоединился: 2009-01-16 17:56:12.400000
|
clientread - это когда клиенту присылают пакет. Прислали - сохранили в переменную не отходя от кассы - обработали. Всё. Зачем второй раз читать то же самое?
|
|
|
RE: Чат на делфи 6 - 2009-03-04 23:42:34.793333
|
|
|
Мимо_шел
Сообщений: 11
Оценки: 0
Присоединился: 2008-12-20 16:08:44.566666
|
Да я тебя понял), он дабавляет логин в поле memo1, но как сделать чтобы другой пользователь тоже видел того кто вошел в чат,а тот кто вошел в чат видел того кто уже сидит там?))
|
|
|
RE: Чат на делфи 6 - 2009-03-05 22:10:51.110000
|
|
|
unconnected2
Сообщений: 332
Оценки: 0
Присоединился: 2009-01-16 17:56:12.400000
|
Блин люди вы поиском пользоваться умеете? В интернете туча примеров чатов на Delphi. И передачу файлов можно прикрутить при желании. И когда заходишь на сервер - все это видят. Зачем идти на форум если ещё поиском не умеешь пользоваться? [риторически] http://www.google.ru/search?hl=ru&q=%D1%87%D0%B0%D1%82+%D0%BD%D0%B0+%D1%81%D0%BE%D0%BA%D0%B5%D1%82%D0%B0%D1%85+delphi&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq= Панацея.
|
|
|
RE: Чат на делфи 6 - 2009-03-14 06:07:16.396666
|
|
|
HolyAnimal =^.^=
Сообщений: 88
Оценки: 0
Присоединился: 2009-02-28 01:26:28.003333
|
Вот мну помнитсо, я тож как-то типо такого чата для универа делал -_^ Но вот злой дяденька админ, со своими ограничениями на фсе, подпортил жизнь чату Т_Т Чата не было, но початиться очень хотелось… Т_Т У нас еше диск один был расшаренный на все компы, вот и пришла ко мне одна бредовая идея Т_Т Ни каких те сокетов… тупо один клиент и текстовый файл -_^ Думаю принцип его работы ужо уловили -_^ Но можно было, даже назначить админов/модеров, с возможностью выбрасывания из чата и выключения компа (типо бан) ^_^ И довольно таки шустро работал!!! о_О Потом есчо, от нефиг деланья на парах, скины припаял к нему… ^_^ Понимаю, скажите, что ето за извращения, но… ведь початиться получилось! -_^
|
|
|
RE: Чат на делфи 6 - 2009-03-19 15:13:27.350000
|
|
|
Мимо_шел
Сообщений: 11
Оценки: 0
Присоединился: 2008-12-20 16:08:44.566666
|
Выложи что тсталось (если вообще чтото отсалось)?) интересно посмотреть)
|
|
|
RE: Чат на делфи 6 - 2009-03-19 15:39:49.600000
|
|
|
unconnected2
Сообщений: 332
Оценки: 0
Присоединился: 2009-01-16 17:56:12.400000
|
HolyAnimal =^.^=, невероятно но факт, у нас находчивая молодежь по локалке точно такое же придумала.. Т.е. при отправке сообщения оно записывается в файл, и другой клиент его читает. правда реализация не очень была)
|
|
|
RE: Чат на делфи 6 - 2009-03-19 15:42:22.956666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Бедный винт на сервере ;)
|
|
|
|
|