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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: учимся правильно писать, не в первом класе
Старый 21.04.2009, 11:56   #1
Ратмир
Пользователь
 
Регистрация: 01.04.2009
Сообщений: 14
Плохо Сетевой чат

Помогите нужно в место ip высвечивался ник клиента в Memo1
Цитата:
unit Unit1;

procedure TForm1.Button1Click(Sender: TObject);
begin
PORT:=StrToInt(Edit3.Text);
ServerSocket1.Port := PORT;
Memo2.Lines.Insert(0,'Server starting');
ServerSocket1.Active:= True;
Edit3.Enabled:=false;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ServerSocket1.Active := False;
Memo2.Lines.Insert(0,'Server stopped');
end;

procedure TForm1.ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Insert(0,'Client connection accepted');
end;

procedure TForm1.ServerSocket1Listen(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Insert(0,'Listening on port '+IntToStr(ServerSocket1.Port));
end;

procedure TForm1.ServerSocket1ClientConnect(S ender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Insert(0,'Client connected');
end;

procedure TForm1.ServerSocket1ClientDisconnec t(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Insert(0,'Client disconnected');
end;

procedure TForm1.ServerSocket1ClientError(Sen der: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
Memo2.Lines.Insert(0,'Client error. Code = '+IntToStr(ErrorCode));
end;

procedure TForm1.ServerSocket1ClientRead(Send er: TObject;
Socket: TCustomWinSocket);
var i: Integer;
s: String;
begin
Memo2.Lines.Insert(0,'Message received from client/От клиента получено сообщение');

s:=Socket.ReceiveText;
Memo3.Clear;
For i:=0 to ServerSocket1.Socket.ActiveConnecti ons-1 do
Begin
ServerSocket1.Socket.Connections[i].SendText(s);
Memo3.Lines.Insert(0, IntToStr(i)+' '+ ServerSocket1.Socket.Connections[i].RemoteAddress);
End;

end;

procedure TForm1.ServerSocket1ClientWrite(Sen der: TObject;
Socket: TCustomWinSocket);
var i: Integer;
begin
Memo2.Lines.Insert(0,'Now can write to socket');
Memo3.Clear;
For i:=0 to ServerSocket1.Socket.ActiveConnecti ons-1 do
Begin
Memo3.Lines.Add(IntToStr(i)+' '+ ServerSocket1.Socket.Connections[i].RemoteAddress);
end;
// Memo2.Lines.Insert(0,'Now can write to socket');
end;

procedure TForm1.ServerSocket1GetSocket(Sende r: TObject; Socket: Integer;
var ClientSocket: TServerClientWinSocket);
begin
Memo2.Lines.Insert(0,'Get socket');
end;

procedure TForm1.Button3Click(Sender: TObject);

begin
If ClientSocket1.Active then
Begin
ClientSocket1.Socket.SendText(Edit2 .Text+'<>'+Edit1.Text);
Memo1.Lines.Insert(0,' > '+Edit1.Text);
Edit1.Clear; Edit1.SetFocus;
End;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
PORT:=StrToInt(Edit3.Text);
ClientSocket1.Port := PORT; {Метод Insert вставляет строку в массив в указанную позицию}
ClientSocket1.Address:=Edit2.Text;
Memo2.Lines.Insert(0,'Server starting');
ClientSocket1.Active:=True;
Edit2.Enabled:=False;

end;

procedure TForm1.Button5Click(Sender: TObject);
begin
ClientSocket1.Active := False;
Memo2.Lines.Insert(0,'Server stopped');
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin

Memo1.Lines.Insert(0,'> '+Socket.ReceiveText);
end;

end.

Последний раз редактировалось Ратмир; 21.04.2009 в 11:59.
Ратмир вне форума Ответить с цитированием
Старый 21.04.2009, 12:11   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

ну так создай переменную tstrings в которой будут находится ip адреса и ники которые к ним относятся... и при подключении выводи нужный ник
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 21.04.2009, 12:21   #3
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

type
TForm1 = class(TForm)
Memo1: TMemo;{чат}
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
Edit1: TEdit;{адрес сервака}
Edit2: TEdit; {ник}
SpeedButton1: TSpeedButton;
Edit3: TEdit; {сообщение}
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{приём сообщения}
procedure TForm1.ServerSocket1ClientRead(Send er: TObject;
Socket: TCustomWinSocket);
var
StringFormatedStream:TStringStream;
s:string;
begin
StringFormatedStream:=TStringStream .Create('');
memo1.lines.add(socket.ReceiveText+ ' '+stringFormatedStream.DataString);
stringFormatedstream.free;
end;
{отправка}
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
clientsocket1.Host:=edit2.text;
clientsocket1.Active:=true;
Clientsocket1.socket.sendtext(Edit3 .Text+ ': ' +edit1.text);

edit1.clear;
end;

з.ы: незабуть скинуть на форму компонент
ClientSocket и ServerSocket они находятся на вкладке Internet
ShowMessage('Добро пожаловать!');

Последний раз редактировалось KORN; 21.04.2009 в 12:25.
Alex2009 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сетевой учебник deadh5n1 Фриланс 3 18.10.2008 00:16
Тулза на тему сетевой чат Ring0Sn Софт 9 03.07.2008 21:02
Сетевой диск Nic-x Win Api 4 07.02.2008 15:05
Сетевой тест Stanislav Работа с сетью в Delphi 3 29.12.2007 01:37