Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
Святослав ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.047 c
2-1183121226
TruePunk
2007-06-29 16:47
2007.07.22
как установить


11-1165925757
Trible
2006-12-12 15:15
2007.07.22
_NewControl


9-1142786016
Mortem
2006-03-19 19:33
2007.07.22
Конкурсы по программированию игр на Delphi продолжаются


4-1170672620
vlad2
2007-02-05 13:50
2007.07.22
Размещение в памяти больших массивов


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский