السلام عليكم ورحمة الله
كيف يمكن استخدام Tserversocket component داخل Console application والاستفادة من Events الخاصة بها كما لو تكن داخل برنامج عادى ....
ارجو الافادة B)
السلام عليكم ورحمة الله
كيف يمكن استخدام Tserversocket component داخل Console application والاستفادة من Events الخاصة بها كما لو تكن داخل برنامج عادى ....
ارجو الافادة B)
{ربى زدنى علما}
ماهو Tserversocket component
ServerSocket كمبوننت موجود فى delphi 6 ويمكن اضافته فى دلفى 7 يكون موجود تحت internet ويستخدم فى البرامج التى تتكون من server/client وهذا المكون يكون موجود فى السيرفر
شكرا
{ربى زدنى علما}
program server;
{$APPTYPE CONSOLE}
uses
SysUtils,
ScktComp;
var
myServer:tserversocket;
begin
myserver:=tserversocket.Create(nil);
myserver.Port:=222;
myserver.Active:=true;
while true do sleep(1000);
end.هذا اخر ما توصلت اليه وشكرا
{ربى زدنى علما}
حسنا هذا قد يساعد ..
النسب الديناميكي للأحداث قد يعمل معك مشكله ..
لابأس سنوجد لها حل :
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,
//نضيف الوحدات المتعلقه به
IdBaseComponent, IdComponent, IdTCPServer;
// نعرف متحول من الصنف الخاص به
var IdTCPServer1: TIdTCPServer;
begin
// نقوم بعمليه إنشاء
IdTCPServer1:=TIdTCPServer.Create(nil);
IdTCPServer1.Bindings.Add.Port:=8080;
IdTCPServer1.Bindings.Add.IP:='127.0.0.1';
IdTCPServer1.Active:=true;
// IdTCPServer1.OnExecute:=proc;
readln;
// نقوم بعمليه تحرير
IdTCPServer1.Free;
end.عفوا يبدو انك وصلت إليه .. وضعت المشاركه دون ملاحظة مشاركاتك قبلها ..
لابأس سأعود
لا عليك انا استفت تانى من المشاركة بتعتك وانا فى تقدم اليوم فى هذا الموضوع الحمد لله انا سوف اتابع الى ان اعرف ثم ان شاء الله اكتب موضوع كامل لكل ما وصلت اليه لكى يستفيد منه من يحب من الاعضاء شكرا
{ربى زدنى علما}
انت تستخدم Console application ممكن عشان تقليل الحجم
وباستخدام الأداة ماراح نستفيد شي راح يرجع الحجم <_<
-------------------
قبل كنت أستخدم الوحده Borland Delphi Winsock 1.1 Library
والحين WinSock الموجوده مع الدلفي بدون أدوات ;) أحسن
المرفق فيه الوحده Sockets
مثال سريع غير مجرب
type TConnection = class procedure Read(Sender: TObject; Socket: TCustomWinSocket); procedure Disconnect(Sender: TObject; Socket: TCustomWinSocket); end; var ServerSocket: TServerSocket; Connection: TConnection; begin Connection := TConnection.Create; ServerSocket := TServerSocket.Create; ServerSocket.Port :=StrToIntDef(Trim(Copy(TRNF_PORT,11,Length(TRNF_PORT))),DEF_UD_PORT); try ServerSocket.Active := True; ServerSocket.Open; ServerSocket.OnClientRead := Connection.Read ; ServerSocket.OnClientDisconnect := Connection.desc; except end; end;
باختصار:
TServerSocket : تجهز الخادم لاستقبال الاتصال
TConnection : تربط ServerSocket مع الاحداث
يعني راح تسوي مجموعة procedure للأحداث
مثلا,
procedure TConnection.Read(Sender: TObject; Socket: TCustomWinSocket); procedure TConnection.Disconnect(Sender: TObject; Socket: TCustomWinSocket);
وهكذا...
حلو هذا يحل مشكلة النسب الديناميكي التي كان يجب أن أشرحها
الطريقة سليمة :
ننشيء صنق جديد من أجل الأحداث
TConnection = class procedure Read(Sender: TObject; Socket: TCustomWinSocket); procedure Disconnect(Sender: TObject; Socket: TCustomWinSocket); end;
وننسب الأحداث عم طريق الشفره
ServerSocket.OnClientRead := Connection.Read ; ServerSocket.OnClientDisconnect := Connection.desc;
هذا الموضوع مغلق.