لدي برنامج يعمل على الشبكة بواسطة طريقة datasnap
حيث يقوم Server بالاتصال بقاعدة البيانات (SQL Server 2005)
و يقدم الــ Server جميع الاجراءات الازمة للـ Client من بحث و تعديل و اضافة ... الخ
و يتم العمل بارسال Client طلب تنفيذ اجراء على Server و يقوم بالتالي بارجاع قيم او مجموعة من الحقول لجهاز Client الذي طلب تنفيذ الاجراء
المشكلة لدي كانت اذا اردت ان يطلب Server تنفيذ اجراء على Client
و معرفة من الاجهزة Client باقي على الاتصال (يمكن ان يسجل خروج بشكل طبيعي لكن في حال و جود مشكلة في الجهاز كاعاده التشغيل او انقطاع الكهرباء)
الطريقة التي ذكرتها تصلح اذا كان البرنامج يتعامل مع قواعد بيانات بوجدود مستخدمين و صلاحيات على مستوى قاعدة البيانات ( اي انك تمنح الصلاحيات عن طريق قاعدة البيانات)
لكن لو فرضنا اننا نستخدم برنامج لا يتعامل مع قواعد البيانات , و يقوم بعمليات حسابية او اي اجراءات اخرى
ففي هذه الحالة لن نستطيع الاستفاده من هذه المميزات التي في قواعد البيانات
و ايضا كيف يرسل جهاز Server رسالة او بعض المعلومات للـ Client
و تظهر مباشرة على شاشة Client
مثال على هذا الاستفسار
لو كان لدينا Server يتتبع اسعار الاسهم و يرسل الاسعار الجديده للـ Client
فإن السعر الجديد يجب ان يظهر مباشره على جهاز Client
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
var i:integer;
begin
for i := 0 to ClientList.Items.Count - 1 do
begin
if ClientList.Items[i]=Socket.RemoteAddress then
begin
ClientList.Items.Delete(i);
break;
end;
end;
end;
ClientList.Items هي قائمة الزبائن المتصلين حاليا !
مثال التعامل datasnap
وان شاء الله ارسل
مثال كامل للتعامل مع dataSnap - قواعد بيانات - ارسال صور - او نص
drivername:='Oracle';
database:='Ma';
// Hostname = devapp10g and IP = 172.16.17.32 DbsName = med10 -User Name Madcap - Password = madcap
HostName:='54.235.145.117'; // ip is example server public
HostName:='162.116.117.32'; // ip is example server loacl
HostName:='localhost'; // ip is example client local
Port:='8080';
Port:='211';
user:='ma';
password:='ma';
With ORACLECONNECTION do begin
Params.Values['drivername'] := drivername;
Params.Values['database'] := database;
Params.Values['HostName'] := HostName;
Params.Values['Port'] := Port;
Params.Values['DSAuthenticationUser'] := user;
Params.Values['DSAuthenticationPassword'] := password;
end;
// Form_MAIN_SERVER.Caption:=ORACLECONNECTION.Params.Values['HostName'];
غير اسم الجدول ونوع قاعدة البيانات والاسم وكلمة السر
واسم الجهاز
او server- client
المثال يعمل من اي مكان في العالم
المطلوب
1- جهاز سيرفر وip public
2- client
3- اختار tcp/ip or http
ومن يحتاج الى دروس شرح كيف الاسلوب
ان شاء الله سأقوم بذلك