الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استخدام TserverSocket داخل Console

مغلق
بدأه JuStNiCk في 4 فبراير 2005 · 9 رد · 764 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

كيف يمكن استخدام Tserversocket component داخل Console application والاستفادة من Events الخاصة بها كما لو تكن داخل برنامج عادى ....

ارجو الافادة B)

{ربى زدنى علما}

#2

هل الفكرة مستحيلة الى هذا الحد

{ربى زدنى علما}

#3

ماهو Tserversocket component

#4

ServerSocket كمبوننت موجود فى delphi 6 ويمكن اضافته فى دلفى 7 يكون موجود تحت internet ويستخدم فى البرامج التى تتكون من server/client وهذا المكون يكون موجود فى السيرفر

شكرا

{ربى زدنى علما}

#5
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.

هذا اخر ما توصلت اليه وشكرا

{ربى زدنى علما}

#6

حسنا هذا قد يساعد ..

النسب الديناميكي للأحداث قد يعمل معك مشكله ..

لابأس سنوجد لها حل :

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.
#7

عفوا يبدو انك وصلت إليه .. وضعت المشاركه دون ملاحظة مشاركاتك قبلها ..

لابأس سأعود

#8

لا عليك انا استفت تانى من المشاركة بتعتك وانا فى تقدم اليوم فى هذا الموضوع الحمد لله انا سوف اتابع الى ان اعرف ثم ان شاء الله اكتب موضوع كامل لكل ما وصلت اليه لكى يستفيد منه من يحب من الاعضاء شكرا

{ربى زدنى علما}

#9

انت تستخدم 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);

وهكذا...

Sockets.rar

#10

حلو هذا يحل مشكلة النسب الديناميكي التي كان يجب أن أشرحها

الطريقة سليمة :

ننشيء صنق جديد من أجل الأحداث

TConnection = class

procedure Read(Sender: TObject; Socket: TCustomWinSocket);
procedure Disconnect(Sender: TObject; Socket: TCustomWinSocket);

end;

وننسب الأحداث عم طريق الشفره

ServerSocket.OnClientRead :=  Connection.Read ;
ServerSocket.OnClientDisconnect := Connection.desc;

هذا الموضوع مغلق.

مواضيع مشابهة