السلام عليكم:
عندي برنامج اسهم ابغى ارسل رساله من الclient تحتوي على معلومات(اسم الشركة-كمية الاسهم-قيمة السهم) الى ال server لكن في ال server كيف اقسمها و عرف هذا int او float او string
ياليتكم تساعدوني في هالمشكله وشكرا
السلام عليكم:
عندي برنامج اسهم ابغى ارسل رساله من الclient تحتوي على معلومات(اسم الشركة-كمية الاسهم-قيمة السهم) الى ال server لكن في ال server كيف اقسمها و عرف هذا int او float او string
ياليتكم تساعدوني في هالمشكله وشكرا
سهلة.... هذا اسمه بروتوكول(PROTOCOL) و هو يحدد الاجزاء التي ستحتوي على معلومات معينة
مثلا انت تقوم بعمل بروتوكول لوحدك حيث ان الكلمة الاولى هي الامر و الثانية هي اسم الشركة و الثالثة كمية الاسهم و الرابعة قيمة السهم... تكون هكذا:
اذا اراد الclient من الserver ان يقوم باضافة هذه المعلومات:
ADD MyCompany 50 3.5\r\n
حيث ان add هي امر الاضافة.
MyCompany هو اسم الشركة.
50 هو عدد الاسهم
3.5 هو قيمة السهم
\r\n هو new line في السي++
وتقوم بعمل text parsing اي تقسيم النص الى عده اجزاء علما بان الحرف الفاصبل بين كل قيمة هو مسافة(space) و تضعها في array و اخذ كل قيمة على حدا مثل ال split لإي الفجوال بيسك
array = split(mydata," ")
array(0) will be the command
array(1) my company
etc
راكان الحنيطي
Be Open Source

احسنت هيك الواحد يطرح السؤال مو مثل المشاركة الماضية حين طلبت البرنامج بالكامل!!!!
شوف مشان السترينغ الامر واضح وسهل لان هو يستقبل على انه سترينغ
مشان الـ int يمكنك تحويل الـ String الى int بواسطة الصف
java.lang.Integer.parseInt("put the int here");يعني مثلا تضع "89756 " هي تاتي و كانها ستريتغ بواسطة هذا الصف تصبح int و تستطيع التعامل معها في برنامجك المستقبل على انها int
Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why
انا ارى ان يتم استخدام ال Object Serializaton عبر الSocket فهو افضل ومستخدم في برامج التجارة الالكترونية كالمزادات مثلا .فبدل ارسال كائن نص او رقم ,ترسل كائن من نوع Client مثلا ثم تقوم باخذ الخصائص عند وصوله الى الجهة الثانية :
Client c = new Client(); c.Name = "name";
الان تقوم بارسال الكائن عبر السوكت مثلا باستخدام WriteObject ثم تستقبله في جهة السيرفر باستخدام ReadObject و تحصل على خاصية Name مثلا .
اقرأ المقال التالي فهو مفيد في هذا المجال:
http://java.sun.com/developer/technicalArticles/ALT/sockets/
اشكركم على الردود ..
لكن وجدت طريقة اسهل للتقسيم :
StringTokenizer spilit=new StringTokenizer(message);
while(spilit.hasMoreTokens())
{
spilit.nextToken();//the word of the order
id=Integer.parseInt(spilit.nextToken());
quant=Integer.parseInt(spilit.nextToken());
}
هذا الموضوع مغلق.