Форум: "Сети";
Текущий архив: 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