Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.22;
Скачать: CL | DM;

Вниз

Помогите сделать простое клиент-сервер приложение   Найти похожие ветки 

 
Святослав ©   (2006-10-20 03:38) [0]

Сервер:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, ExtCtrls,ScktComp;

type
 TForm1 = class(TForm)
   Start: TButton;
   serv: TTcpServer;
   procedure Start(Sender: TObject);
   procedure servAccept(Sender: TObject; ClientSocket: TCustomIpClient);
   procedure servListening(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Start(Sender: TObject);
begin
serv.LocalHost:="localhost";
serv.LocalPort:=’1025’;
serv.Open;
end;

procedure TForm1.servAccept(Sender: TObject;
 ClientSocket: TCustomIpClient);
begin
showmessage(serv.Receiveln());
end;

procedure TForm1.servListening(Sender: TObject);
begin
beep;
end;

end.

Клиент:
unit Unit2;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, ExtCtrls,ScktComp;

type
 TForm1 = class(TForm)
   Start: TButton;
   Client: TTcpClient;
   procedure Start(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Start(Sender: TObject);
begin
client.RemoteHost:=’localhost’;
client.RemotePort:=’1025’;
client.Open;
client.Sendln("hello");
end;

end.


 
Сергей М. ©   (2006-10-20 08:13) [1]

Чем же тебе помочь ?


 
Slym ©   (2006-10-20 10:00) [2]

http://delphimaster.net/view/6-1158428475/


 
Святослав ©   (2006-10-20 23:29) [3]


> Сергей М. ©   (20.10.06 08:13) [1]
> Чем же тебе помочь ?

Неработает :(((


 
Ketmar ©   (2006-10-20 23:48) [4]

>[3] Святослав(c) 20-Oct-2006, 23:29
>Неработает :(((
бывает. магазин хозтоваров недалеко, полагаю?


 
Святослав ©   (2006-10-21 01:42) [5]


> бывает. магазин хозтоваров недалеко, полагаю?

далеко...


 
Ketmar ©   (2006-10-21 01:51) [6]

>[5] Святослав(c) 21-Oct-2006, 01:42
>далеко...
тогда заодно и физкультурой позанимаешься.


 
Святослав ©   (2006-10-21 02:07) [7]


> тогда заодно и физкультурой позанимаешься.

А смысл?


 
Ketmar ©   (2006-10-21 02:14) [8]

>[7] Святослав(c) 21-Oct-2006, 02:07
>А смысл?
перестанешь флудить.


 
Святослав ©   (2006-10-21 02:26) [9]


> перестанешь флудить.

Объясни пожалуйста для особо одаренных что это значит?


 
Ketmar ©   (2006-10-21 02:28) [10]

>[9] Святослав(c) 21-Oct-2006, 02:26
>Объясни пожалуйста для особо одаренных что это значит?
http://ln.com.ua/~openxs/articles/smart-questions-ru.html


 
Святослав ©   (2006-10-21 02:35) [11]


> http://ln.com.ua/~openxs/articles/smart-questions-ru.html

Понятно :))))))))))))))))


 
Святослав ©   (2006-10-27 03:31) [12]

У кого-нибудь есть ценная мысль по такой проблеме:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, ExtCtrls,ScktComp;

type
 TForm1 = class(TForm)
   Nport: TLabeledEdit;
   Np: TUpDown;
   kn: TButton;
   procedure knClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 serv:TServerSocket;
 client:TClientSocket;
implementation

{$R *.dfm}

procedure TForm1.knClick(Sender: TObject);
begin
serv:=TServerSocket.Create(self);
serv.Port:=np.Position;
serv.Active:=true;
showmessage(booltostr(serv.Active,true));

client:=TClientSocket.Create(self);
client.Host:="localhost";
client.Port:=Np.Position;
client.Active:=true;
showmessage(booltostr(client.Active,true));
end;

end;

serv.Active устанавливается в true, client.Active нет!!!  Что не так?


 
Ketmar ©   (2006-10-27 03:45) [13]

TServerSocket:
You can specify this port using the LocalPort property.

TClientSocket:
Use the RemoteHost property to specify the remote host server.
At runtime, use the Open or Close method to open or close the connection.

(ц) справка

Open() же справедливо и для TServerSocket. но это детали.


 
Святослав ©   (2006-10-27 04:16) [14]


> TServerSocket:
> You can specify this port using the LocalPort property.
>
> TClientSocket:
> Use the RemoteHost property to specify the remote host server.
>
> At runtime, use the Open or Close method to open or close
> the connection.

Нет свойств LocalPort, RemoteHost в TServerSocket и TClientSocket :(


 
Ketmar ©   (2006-10-27 05:13) [15]

>[14] Святослав(c) 27-Oct-2006, 04:16
>Нет свойств LocalPort, RemoteHost в TServerSocket и
>TClientSocket :(
хм. справка врёт? ладно. лень проверять. тогда поясню "на пальцах". %-)

TClientSocket() по-умолчанию создаётся в неблокирующем режиме. поэтому ты только говоришь ему "давай, соединяйся". дальше он себе что-то делает некоторое время. а ты, пока он занят, пристаёшь с глупыми вопросами: "ну как? ты кончил?"
обрабатывай событие "OnConnect" -- будет тебе счастье. или переведи client в блокирующий режим: client.ClientType := ctBlocking;.


 
Святослав ©   (2006-10-28 04:02) [16]


> TClientSocket() по-умолчанию создаётся в неблокирующем режиме.
>  поэтому ты только говоришь ему "давай, соединяйся". дальше
> он себе что-то делает некоторое время. а ты, пока он занят,
>  пристаёшь с глупыми вопросами: "ну как? ты кончил?"
> обрабатывай событие "OnConnect" -- будет тебе счастье. или
> переведи client в блокирующий режим: client.ClientType :
> = ctBlocking;.

Продвинулся дальше, но выплыл новейший глюк из разряда WinAPI! Если не лень посмотри, должно понравиться :)

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, ExtCtrls,ScktComp, Sockets;

type
 TForm1 = class(TForm)
   Nport: TLabeledEdit;
   Np: TUpDown;
   kn: TButton;        
   procedure knClick(Sender: TObject);
 private
   { Private declarations }
 public
    procedure w(Sender: TObject; Socket: TCustomWinSocket);
   { Public declarations }
 end;

var
 Form1: TForm1;
 serv:TServerSocket;
 client:TClientSocket;
implementation

{$R *.dfm}
procedure TForm1.w;
begin
showmessage(serv.Socket.ReceiveText);
end;

procedure TForm1.knClick(Sender: TObject);
begin
serv:=TServerSocket.Create(self);
serv.Port:=np.Position;
serv.OnClientWrite:=w;
serv.Active:=true;

client:=TClientSocket.Create(self);
client.Host:="localhost";
client.Port:=Np.Position;
client.Active:=true;
client.Socket.SendText("aaa");
end;

end.

Событие OnClientWrite происходит, но наверно я его раково обрабатываю…


 
Ketmar ©   (2006-10-28 04:46) [17]

ну вот какого ангела ты делаешь SendText(), не дав клиентскому сокету кончить? пусть он сначала получит оргазм от соединения, а потом уже оправляй что-то.

зыж глюки не в WinAPI. просто кое-кому лень литературу читать. %-))


 
Святослав ©   (2006-10-29 19:22) [18]


> ну вот какого ангела ты делаешь SendText(), не дав клиентскому
> сокету кончить? пусть он сначала получит оргазм от соединения,
>  а потом уже оправляй что-то.

client:=TClientSocket.Create(self);
client.Host:="localhost";
client.Port:=Np.Position;
client.Active:=true;

repeat
until client.Active;

client.Socket.SendText("aaa");

Не кончает :((( Зависает...


> просто кое-кому лень литературу читать. %-))

Да лень, все на английском и для профи...
У тебя есть что-нибудь в электроном виде? или ссылка на толковый источник?


 
Ketmar ©   (2006-10-29 19:23) [19]

>[18] Святослав(c) 29-Oct-2006, 19:22
>Да лень, все на английском и для профи...
всё. разговор окончен.


 
Святослав ©   (2006-10-29 23:28) [20]


> всё. разговор окончен.

Баба с воза, кабыла на воз...


 
Сергей М. ©   (2006-10-30 09:02) [21]


> Святослав ©   (29.10.06 19:22) [18]


Отправку сообщений следует начинать не раньше возникновения события On[Client]Write !


 
_sten_ ©   (2006-12-20 22:44) [22]

А как работать в режиме ctBlocking ктото знает?


 
Сергей М. ©   (2006-12-21 08:21) [23]


> _sten_ ©   (20.12.06 22:44) [22]


Проще простого.

Open;
SendXXXX;
ReceiveXXXX;



Страницы: 1 вся ветка

Текущий архив: 2007.07.22;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.047 c
2-1183038007
Cj
2007-06-28 17:40
2007.07.22
Read Disk


15-1182752797
de.
2007-06-25 10:26
2007.07.22
Открыть часть набора данных


15-1182203401
SerJaNT
2007-06-19 01:50
2007.07.22
Сеть...


2-1182628711
Zaffar
2007-06-23 23:58
2007.07.22
по ООП


3-1176918571
Michelin
2007-04-18 21:49
2007.07.22
Delphi+Oracle