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

مساعدة في فهم متطلبات البرنامج

بدأه حامي الحمى في 23 مارس 2011 · 3 رد · 457 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي برنامج وهو برنامج يقوم بعمل backup للملفات بواسطة rmi

وانا جديد في هذا المجال واشعر ان الأمر لم يستقر في ذهني بالشكل المطلوب

في البرنامج يوجد قسمان: خادم - BackupServer وزبون او مستخدم - BackupClient

للخادم يمكن ان يتصل اكثر من زبون، وكل واحد له اسم مستخدم خاص. في الخادم يوجد مجلد لكل مستخدم وبهذا المجلد يتم نسخ ملفات الزبون.

برنامج الزبون يتم تهيئته بواسطة ال aruments التالية: url, اسم المستخدم (string), والمجلد الاساسي)root directory) التي سيتم نسخها.

برنامج الزبون يحصل على توجيه (reference) للخادم وتستعمله لانتاج object من نوع UserBackup الذي يخدم زبون واحد فقط (السيرفر يقوم بالنسخ لجميع المستخدمين.

بعدها يستعمل المستخدم UserBackup لانتاج نسخة بعيدة , object من نوع RemoteCopy, لكل ملف ولكل مجلد بشجرة المجلدات, ابنتداء من المجلد الاساسي.

اخيرا، يثوم المستخدم بالمرور على كل ملفاته وعلى النسح البعيدة لهن ويقارن بينهن.

ملف يعتبر مشابه لنسخته اذا كان lastModified لهن متشابه. اذا لم تكن الملفات متشابهه، يقوم المستخدم بنسخ محتوى الملف الى السيرفر بواسطة الدالة update التي تستقبل محتوى الملف, ويقوم بتحديث الـ lastModified للملف.

في النهاية، الزبون يستطيع ان يستعيد محتوى الملف بواسطة الدالة recover التي تقوم بارجاع محتوى النسخة البعيدة.

كتبت هذه الـ classes

publicinterface BackupServer extends Remote {
public UserBackup getUserBackup(String username) throws RemoteException;
}

publicinterface UserBackup extends Remote {
RemoteCopy getCopy(String filepath) throws RemoteException;
}

publicinterface RemoteCopy extends Remote {
publiclong lastModified() throws RemoteException;
publicvoid update(byte [] content) throws RemoteException;
publicbyte[] recover() throws RemoteException;
}

وايضا الـ implementations للثلاث classes السابقة BackupServerImpl, UserBackupImpl, RemoteCopyImpl.

ويجب علي ان اكتب class للزبون باسم BackupClient

هل من الممكن ان يساعدني احد كيف يمكنني ان افهم هذا السؤال؟ وكيف يمكنني البداية فيه

لقد قمت بعمل الدوال (ليس كلها)

ولكني لم افهم الأمور التالية:

ماذا تفعل الدالة

UserBackup getUserBackup(String username) throws RemoteException

واذا ممكن احد يشرح لي فقط ما هي وظيفة كل class

بارك الله فيكم سلف

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#2

ابحث هنا في المنتدى عن دروس RMI

هذه قد تكون بداية جيدة

بعد ذلك عندما يصعب عليك أي شيء تعال واسأل

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

السلام عليكم

بحثت اخي وما لاقيت شرح

والشرح اللي لاقيته في النت مش كثير واضح

يا ريت اذا ممكن بس تعطوني خيط بداية (بالكلمات مش بالكود)

وبارك الله فيكم سلف

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#4

السلام عليكم

لدي مشكلة عند ترجمة الكلاسات

كلاس السيرفر اقوم بترجمته (بيعمل bind )

لكن الكلاينت لا يعمل يصل حتى الـ lookup ويقف

هذا هو الكود للكلاسات الاثنين

كلاس Client

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;


public class BackupClient {

	final static String HOST = "localhost";

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		BackupServer rmiServer;
		Registry registry;

		try {
			URL url = new URL(args[0]);
			System.out.println("Mahmoud 1");
		} catch (MalformedURLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		String clientName = args[1];
		String rootDirectory = args[2];

		System.out.println("Mahmoud 2");



		if(args.length != 3)
		{
			System.out.println("sasas");
			System.exit(1);
		}

		try {
			String objectName = "rmi://" + HOST + "/MyFolder";
			System.out.println("Mahmoud 3");
			// get reference to the BackupServer
			BackupServer server = (BackupServer) Naming.lookup(objectName);
			System.out.println("Mahmoud 4");
			UserBackup usrBackup= server.getUserBackup(clientName);

			RemoteCopy rc = usrBackup.getCopy(rootDirectory);
			File rootDir = new File (rootDirectory);
			File []files= rootDir.listFiles();


		}
		catch (Exception e){
			e.fillInStackTrace();

		}



	}

}

كلاس سيرفر

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;


public class BackupServerImpl extends UnicastRemoteObject implements BackupServer {

	final static String HOST = "localhost";

	protected BackupServerImpl() throws RemoteException {
		super();
		// TODO Auto-generated constructor stub
	}

	public UserBackup getUserBackup(String username) throws RemoteException{

		return null;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			String objectName = "rmi://" + HOST +"/MyFoder";
			BackupServer service = new BackupServerImpl();
			Naming.rebind("server", service);
			System.out.println("server ready");
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


	}

}

الرجاء المساعدة

بارك الله فيكم

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…