# فناوری جاوا > برنامه‌نویسی جاوا >  P2P File Sharing in Java

## saeedIRHA

سلام
دوستان یک برنام P2P File Sharing با جاوا نوشتم با استفاده از تکنولوژی JXTA
میخواستم اگر ممکنه دوستان تستش کنن و نظراتشون رو بگن؟؟
متاسفانه چون یکی از پروژهای دانشگاهیم هست تا وقتی نمرهش رو نگیرم
نمیتونم سورسش رو هم در اختیارتون بزارم.
اطلاعات تکمیلی هم در مورد JXTA میتونید اینجا پیدا کنید :
http://en.wikipedia.org/wiki/JXTA
http://www.jxta.org
طریقه استفادهش هم خیلی ساده هست اگر سوالی بود بپرسید
فایل:
http://jxta-filesharing-application..../SaEeD-P2P.rar

اگر براتون ممکن هست برنامه رو مدت زمان زیادی باز بزارین که User های جدید بتون
پیداتون کنن.

با تشکر فراوان!!

----------


## saeedIRHA

با سلام
از دوستان کسی این برنامه رو تست نکرده ؟؟
ممنون میشم اگر یک وقت کوچیک بزارین و تست کنین و نتیجش رو به من
بگین, چون مشقول نوشتن گزارش براش هستم و می خوام نتیجش رو یک جمع بندی کنم
ممنون میشم اگر دوستان کمک کنن

----------


## alinoori

من قبلا با  JXTA کار کردم.فقط برای چه درسی قرار است ارایه دهید؟

----------


## saeedIRHA

پروژ آخر سالم هست برای امسال
تست کردین این برنامه رو ؟؟؟

----------


## alinoori

من دانلود کردم ولی موقع اجرا چند error می دهد من classpath را نیز ست کردم ولی باز error میدهد ، شما ایا تمامی library ها را Add کردید به برنامه؟؟

----------


## saeedIRHA

بله تمام Library های موره نیاز در پوشه ی lib هستند
توجه داشته باشید که فایل JAR مجود با 

java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)

کامپایل شده است
برای اجرای برنامه :

C:\Documents and Settings\SaEeD\Desktop\P2P>java -jar SaEeD-P2P_File_Sharing.jar

----------


## saeedIRHA

> من دانلود کردم ولی موقع اجرا چند error می دهد من classpath را نیز ست کردم ولی باز error میدهد ، شما ایا تمامی library ها را Add کردید به برنامه؟؟


دوست من لطف میکنید های Error برنامه رو اینجا بزارین که من ببینم مشکل از کجاست؟؟

----------


## alinoori

منظور شما اینست که با java 5 نمی توانم اجرایش کنم؟آیا شما با JAVA نسخه 5 برنامه را تست کردی؟

----------


## alinoori

اینم اون error که درباره برنامه شما گفتم.
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version n
umber in .class file
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java  :620)
        at java.security.SecureClassLoader.defineClass(Secure  ClassLoader.java:12
4)
        at java.net.URLClassLoader.defineClass(URLClassLoader  .java:260)
        at java.net.URLClassLoader.access$100(URLClassLoader.  java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:  195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.j  ava:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:3  06)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launche  r.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:2  51)
        at java.lang.ClassLoader.loadClassInternal(ClassLoade  r.java:319)

----------


## saeedIRHA

عرض کردم خدمتتون که من این برنامه رو با جاوا ورژن 6 کامپایل کردم
و از Error هم مشخص هست که JRE شما قدیمی هست اما من سعی میکنم یک نسخش
رو هم با جاوا 5 کامپایل کنم

با تشکر مجدد

----------


## alinoori

می توانم بپرسم شما در کدام دانشگاه هستید؟

----------


## saeedIRHA

سورس کد برنامه به اضافه Class View UML Diagram 
توصيه ميکنم قبل از ديدن سورس يک نيگاهی به UML Diagram بندازيد که راحتتر سردر بياريد
ممنون ميشم اگر نظر هاتون  رو هم لطف کنيد

----------


## mojtaba_java

سلام
جالبه
دوستان من این برنامه را با  vb نوشته اند

----------


## saeedIRHA

در حال حاضر Jxta Platform فقط برايه C و Java هستش مگر اینکه شما کل Platform رو از اول نوشته باشين
که کار اسونی نيستش, www.jxta.org 
به هر حال این سورس برنامه هست اگر دوستان خواستن استفاده کنن
Platform JXTA هم با جاوا و C نوشته شده نه VB 
يک سری به اینجا بزن که اطلاعات بيشتری بدست بياری قبل از اظهار نظر:
www.jxta.org

----------


## mazdadoost

> در حال حاضر Jxta Platform فقط برايه C و Java هستش مگر اینکه شما کل Platform رو از اول نوشته باشين
> که کار اسونی نيستش, www.jxta.org 
> به هر حال این سورس برنامه هست اگر دوستان خواستن استفاده کنن
> Platform JXTA هم با جاوا و C نوشته شده نه VB 
> يک سری به اینجا بزن که اطلاعات بيشتری بدست بياری قبل از اظهار نظر:
> www.jxta.org


دوست عزیز :جهت روشن شدن موضوع :
jxta یک پلت فرم نیست.بلکه یه پرتکل هست.پرتکلی که سان برای پیاده سازی P2P وضع کرده.این پرتکل کاملا مستقل از زبان و سیستم هست.به عبارتی در هر زبانی که بشه به شبکه به صورت کامل و Low level دسترسی داشت مثل c-cpp -java-pascal -perl -tcl asm  و حتی VB 6 و دات نت قابل پیاده سازیه.این به این پرتکل کمک می کنه تا براحتی در هر پلت فرمی اعم از سخت افزار و نرم افزار براحتی قابل پشتیبانی باشه.اصولا برای همه پرتکل ها چه اونهایی که تحت استانداد هستن چه اونهایی که خودتون میسازید تنها اصل ثابت  اینه که عناصر سیستم برای مثال ما شبکه با چه زبانی با هم صحبت کنن!نه این که چطوری.چند مثال : TCP/IP ,FTP,HTTPو البته یک مثال بسیار خوب در این رابطه BitTorrent! این پرتکل هم با زبان های مختلفی هم در پلت قرم های مختلفی پیاده سازی شده!
پس :
1-jxta یک پلت فرم نیست.
2- یه پرتکل هست.
3-مثل هر پرتکلی قابل پیاده سازیه.در اکثر برنامه هایی با کاربرد عمومی:c-cpp-tcl-وحتی با vb  و بهرگیری از سوکت های ویندوز!
4-هر چند من هم تا حالا Implemention ی از jxta به این زبان ندیدم.
خالی از فایده نیست شما هم با دقت بیشتری مخصوصا به عنوان کسی که به شکلی فعالیتی در زمینه P2P با jxta و جاوا داشتبن در زمینه اصول ابتدایی پرتکل ها و مفاهیم اولیوشون داشته باشین  و البته درک دقیق تری از واژه ها برای بیان مفاهیم برسید.
امید وارم مفید بوده باشه.

----------


## saeedIRHA

> دوست عزیز :جهت روشن شدن موضوع :
> jxta یک پلت فرم نیست.بلکه یه پرتکل هست.پرتکلی که سان برای پیاده سازی P2P وضع کرده.این پرتکل کاملا مستقل از زبان و سیستم هست.به عبارتی در هر زبانی که بشه به شبکه به صورت کامل و Low level دسترسی داشت مثل c-cpp -java-pascal -perl -tcl asm  و حتی VB 6 و دات نت قابل پیاده سازیه.این به این پرتکل کمک می کنه تا براحتی در هر پلت فرمی اعم از سخت افزار و نرم افزار براحتی قابل پشتیبانی باشه.اصولا برای همه پرتکل ها چه اونهایی که تحت استانداد هستن چه اونهایی که خودتون میسازید تنها اصل ثابت  اینه که عناصر سیستم برای مثال ما شبکه با چه زبانی با هم صحبت کنن!نه این که چطوری.چند مثال : TCP/IP ,FTP,HTTPو البته یک مثال بسیار خوب در این رابطه BitTorrent! این پرتکل هم با زبان های مختلفی هم در پلت قرم های مختلفی پیاده سازی شده!
> پس :
> 1-jxta یک پلت فرم نیست.
> 2- یه پرتکل هست.
> 3-مثل هر پرتکلی قابل پیاده سازیه.در اکثر برنامه هایی با کاربرد عمومی:c-cpp-tcl-وحتی با vb  و بهرگیری از سوکت های ویندوز!
> 4-هر چند من هم تا حالا Implemention ی از jxta به این زبان ندیدم.
> خالی از فایده نیست شما هم با دقت بیشتری مخصوصا به عنوان کسی که به شکلی فعالیتی در زمینه P2P با jxta و جاوا داشتبن در زمینه اصول ابتدایی پرتکل ها و مفاهیم اولیوشون داشته باشین  و البته درک دقیق تری از واژه ها برای بیان مفاهیم برسید.
> امید وارم مفید بوده باشه.


حرف شما درسته در رابطه با Platform خوندن JXTA توسط من!
اشتباه از من بود و بايد ان رو JXTA Framework صدا ميزدم بجای Platform
ان ههم بخاطر این هست که خود JXTA شامل پرتکل های مختلفی هست که باعث اشتباه من شد!
و البته خيلی جاها هم به عنوان يک Platform شناخته ميشه
برای اثبات حرفم به کتاب Mastering JXTA ,Chapter 2,Page 15 مراجعه کنيد

ساختار JXTA بر اساس XML هست و بايد بشه در زبانهای ديگه پياده سازيش کرد.
ولی اگر دقت ميکرديد من اشاره کردم که با چه زبانی نوشته شده نه اینکه 
با چه زبانی ميشه پياده سازيش کرد,
در ضمن به این نوشته هم يک نيگاهی بندازيد:

As JXTA is based upon a set of open XML protocols, it can be implemented in any modern computer language. 
Implementations are currently available for Java Platform, Standard Edition, C/C++‎/C#‎ and
 J2ME. The C#‎ Version uses the C++‎/C native bindings and is not a complete re-implementation in its own right.

http://en.wikipedia.org/wiki/Jxta

کاملاً مشخص هست که در چه زبانهای در حال حاضر ميشه JXTA رو implement کرد
با تشکر

----------


## mazdadoost

دوست عزیز :
در مورد اینکه jxta مجموعه ای از پرتکل هاست (6 تا) در مقام بیان یه پروتکل خواهد ماند.TCP/IP هم حد اقل 2 پرتکل !تفاوت میان پلت فرم و پرتکل هست!
پلت فرم مجموعه امکانات نرم افزاری  و سخت افزاری هست که(شامل معماری سخت افزاری و نرم افزاری که میتونه به نوعی معرف Framework هم باشه.یعنی Framework های نرم افزاری خودشون زیر مجموعه ای از Software Platform )به نرم افزار ها و برنامه ها امکان اجرا شدن میدن.این یعنی Flex از Adobe در عین این که یه پلت فرم یه فریم ورک هم میتونه باشه!که هست!همینطور در مورد لینوکس میشه گفت : پلت فرمی برای اجرای نرم افزار هاست!یا ویندوز یا جاوا یا دات نت!
در کتابی که فرمودین ذقیقا این ترکیب استفاده شده : platform specification.نه platform .دقت نویسنده و ایجاز کلامش حقیقتا زیباست!این ترکیب با توجه به تعریفی که از پلت فرم دادم این معنا رو افاده میکنه : مجموعه مشخصاتی که نحوه پیاده سازی یک پلت فرم رو نشون میده!این مجموعه مشخصات همون مجموعه 6 پرتکل میشه.به  عبارتی هر platform specification ی تا قبل از پیاده سازی   specification هست. وبعد از پیاده سازیش تبدیل به پلت فرم میشه!امثال بارزش خود جاواست!هم javaSE و هم ME و هم EE هر سه platform specification هستن وقتی توسط خود سان IBM اراکل Nokia و ... پیاده میشن تبدیل به پلت فرم میشن. یعنی : میتونن برنامه های مارو که بر اساس  specification نوشته شدن اجرا کنن.همینطور خواهد بود وقتی ما از پلت فرمی مثل Flash استفاده میکنیم!اصولا همین امر برای ما پلت فرم ها رو ارزش مند میکنه.چیزهایی که برنامه های ما رو اجرا میکنن. یک platform specification تا وقتی تبدیل به platform نشه ارزشی نداره. 
در مورد اینکه این پرتکل تا الان به چه زبان هایی پیاده سازی شده هموطور که گفتم نمی دونستم.و عرض نکردم که شما فرمودین با vb نمیشه پیادش کرد.عرض بنده این بود به عنوان یه پرتکل میشه با vb پیاده سازیش کرد.
با تشکر.

----------


## saeedIRHA

بله صحبت های شما کاملاً درست هست
سعی ميکنم در آينده از لفظ درست استفاده کنم
با تشکر

----------


## pegetive_2010

شما نمیدونید چطور میشه بدون JXTA و با استفاده از socket programming در جاوا یک app ساده p2p  نوشت که file transfer کنه ؟
مشکل اینه که باید کد سرور و کلاینت یکی باشه و من بلد نیستم.

----------

