Форум: "Сети";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
ВнизСоздать Функцию каторая ждала сообщение от Сервера Найти похожие ветки
← →
Amid (2004-05-03 15:07) [0]Создал функцию которая посылает сообшение серверу (ServerSocket) с комп. ClientSocket, как зделать так штобы это функция ждала сообшение от сервера. Но только не использовать цикл
While Boolean do Application.ProcessMessages;
← →
easy © (2004-05-03 18:23) [1]как зделать так штобы на эту функцию посмотреть?..
← →
Evgeny V © (2004-05-04 06:33) [2]событие OnRead не подходит?? Ждет когда что-то получишь, дальше дело твое, как и что обрабатывать
← →
Amid (2004-05-04 09:47) [3]Функция CONECT работает нормально, кагда вызывая из другой програмы то показывает : есте конект или нету (1 или -1). А как зделать так чтобы функ. SEND посылает сообщение серверу (ServerSocket) но как зделать так чтобы она и принимала сообщение от сервера (но только не используя цикл While BOOLEAN do Applica...., а то пока ждет ответ от сервера грузит комп.)
Вот иходник (easy)
//////////////////////////////
library MyDLL;
uses
DM in "DM.pas" {DataModule1: TDataModule},
SysUtils,
Classes,
Forms;
Var
D : TDataModule1;
{$R *.res}
Function Conect(adr : String; port : Integer) : Integer; export; stdCall;
Begin{}
TRY
d := TDataModule1.Create(nil);
d.Eror:=0;
d.ClientSocket1.Address:=adr;
d.ClientSocket1.Port:=port;
d.ClientSocket1.Active:=True;
Except on E: Exception do
d.Eror:=-1;
End;
While d.Eror=0 do
Begin
Application.ProcessMessages;
End;
Result:=d.Eror;
End;{}
{Procedure FreeConect()export; stdCall;
Begin
d.Free;
End;}
Function Send( Number : String ) : String; export; stdCall;
Begin{}
d.Str_Read:="";
D.ClientSocket1.Socket.SendText("<SEND>"+ Number);
// While d.Str_Read="" do Application.ProcessMessages;
result := d.Str_Read;
End;{}
Exports
Conect, Send;
End.
/////////////////////
unit DM;
interface
uses
SysUtils, Classes, ScktComp;
type
TDataModule1 = class(TDataModule)
ClientSocket1: TClientSocket;
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Error(Sender: TObject; Socket :
TCustomWinSocket; ErrorEvent: TErrorEvent; var
ErrorCode: Integer);
procedure ClientSocket1Read(Sender: TObject; Socket:
TCustomWinSocket);
procedure DataModuleCreate(Sender: TObject);
private
public
Eror : Integer;
Str_Read : String;
End;
Var
DataModule1: TDataModule1;
Implementation
{$R *.dfm}
Procedure TDataModule1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
Begin{}
Eror:=1;
End;{}
Procedure TDataModule1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
Begin{}
If ErrorCode<>0 Then
Begin
Eror:=-1;
ErrorCode:=0;
End;
End;{}
Procedure TDataModule1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
Begin{}
Str_Read:=Socket.ReceiveText;
End;{}
Procedure TDataModule1.DataModuleCreate(Sender: TObject);
Begin{}
Str_Read:="";
End;{}
END.
///////////////
← →
Polevi © (2004-05-04 13:05) [4]используй блокирующий режим
← →
Amid (2004-05-05 09:25) [5]Poveli: А как это делается ?
← →
Polevi © (2004-05-05 09:55) [6]cs:=TClientSocket.Create(nil);
cs.Address:="127.0.0.1";
cs.Port:=6666;
ct.ClientType:=ctBlocking;
ct.Open;
ct.SendText("Hello world !");
ShowMessage(ct.ReceiveText);
← →
Amid (2004-05-05 11:10) [7]Спосибо
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.031 c