تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: مشاريع مفتوحة المصدر Java App
صفحة 1 من اصل 1 • شاطر
تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
بسم الله الرحمن الرحيم
أهلا وسهلا بكم إخوانى الكرام و كل عام وانتم بخير ....اليوم إن شاء الله تعالى سنتعلم سويا كيفية أنشاء تطبيق الدردشة للجولات . باستخدام هذا التطبيق يمكنك الدردشة بعضها البعض إذا الجهازين على الشبكة نفسها. ...و في الواقع فكرة هذا التطبيق ستقوم على أنه سيحتوي هذا التطبيق واجهة خادم الدردشة Chat Server وواجهة عميل الدردشة Chat Client ..... و عند تشغيل خادم الدردشة، يمكن ربط جهاز الآخر مع الجهاز السابق باستخدام تطبيق دردشة العميل.
دعونا نفهم السيناريو باستخدام الصور ....لكى يتم تشغيل التطبيق لديك يجب أولا تشغيل خادم الدردشة (الشكل 2). لأن العميل بحاجة إلى خادم تشغيل للاتصال.....وعندما يتم تشغيل خادم الدردشة يقوم بالدخول إلى الهاتف المحمول الخاص بك و يقوم بالتأكد من وجود عميل الدردشة على نفس الشبكة ليقوم بعدها بتوصيل الأجهزة بعضها البعض من خلال عنوان IP الجهاز
في واجهة الأولي من التطبيق خادم الدردشة سنقوم بانشاء زر امر وليكن بأسم Start.....و فية سنقوم بكتابة التعليمات البرمجية لتشغيل الخادم، عند النقرعلى الأمر ابدأ على الشاشة. فيقوم بالبحث عن العميل وعرض عنوان IP الجهاز كما في الشكل 3. لا يزال أنت لا تحتاج إلى تشغيل تطبيق العميل الدردشة.
إذا لم تكن شبكة متاحة فإنه لن يستطيع الخدام تحديد عنوان IP لذلك سوف تحصل العنوان 127.0.0.1 وهو ما يعني المضيف المحلي. وبعد الحصول على عنوان IP الخادم، يتم بدء تشغيل واجهة العميل
وفى واجهة العميل، وسوف نقوم بتوفير مساحة لكتابة وإرسال عنوان IP لملقم. وهذا يعني انك تقوم بإرسال طلب إلى خادم دردشة على التوالي، التي تريد الاتصال به لفتح منفذ لعمل الدردشة بين الجهازين ...و سنتخدم المنفذ الخاص لارسال و استقبال الرسائل القصيرة sms فى الجوال
الشكل 4 أعلاه يوضح لك فى واجهة العميل طريقة إدخال عنوان IP الخادم وإرسال الطلب إلى الملقم عن طريق الضغط على الامر اتصال.لتشغيل واجهة العميل و الخادم و ربط بعضها البعض بنجاح، وتحصل على رسائل التنبيه على كلا الجهازين كما في الشكل 5. الآن اتصالات مستعدون وأنت أيضا على استعداد للدردشة ويبين الشكل 6 واجهات الدردشة من كل من العميل وتطبيقات الخادم.
ويمكن لأي شخص بدء دردشة لأن رسالة تنبيه يؤكد أن لهما صلة.لذلك سنقوم بانشاء حقل نصى زر إرسال كما في الشكل 7
ثم يمكنك ان ترى الكتابة النصية التي يتم إرسالها من قبل الطرف الآخر بالحقل النصي الخاص بك كما في الشكل 8. قد سنقوم بتقديد مقدار الأحرف في رسالة واحدة إلى 160 حرف ....وذلك لانه لا يمكنك إرسال أكثر من 160 حرفا في محادثة واحدة من خلال هذا المنفذ .
تعالوا الان نقوم بتنفيذ ما سبق برمجيا ......فى البداية سأعرض عليكم الفئات و الواجهات التى سيتم أستخدامها فى التعليمات البرمجية .....بالنسبة للفئات هى على النحو التالى :
DataInputStream
DataOutputStream
InputStream
InterruptedException
OutputStream
StringBuffer
StringItem
ServerSocketConnection
SocketConnection
وتلك الفئات و الواجهات قد قمنا بشرحها فى درس تعرف على الحزمة JAVA.IO و كيفية أستخدامها و الدرس : التعامل مع الشبكات فى الجافا Java Networking....لذلك سأعتبرك لديك معلومات عن كيفية استخدام تلك الفئات و الواجهات ...أما تطبيق الدردشة الذى سنقوم بإنشاء سيحتوى على 4 فئات وهم على النحو التالى :
1_ MessageReceiver.java .....و الهدف منها ان يقوم باستلام الرسائل من الطرف الاخر
2_MessageSender.java ........و الهدف من تلك الفئة هو ارسال النصوص الى الطرف الاخر
3_ChatClient.java ..............و هى الفئة التى ستقوم بانشاء واجهة عميل الدردشة
4_ ChatServer.java ............و هى الفئة التى ستقوم بإنشاء واجهة خادم الدردشة .
أولا : أنشاء الفئة MessageReceiver و الفئة MessageSender
1_ قم فتح NetBeans وإنشاء مشروع جديد من التصنيف java me من نوع Mobile Application كما فى الصورة التالية :
2_ قم بالنقر على زر التالى ليظهر لك المربع الحوارى لكتابة أسم MyChatApp مع مراعاة إزالة علامة الخيار Create Hello MIDlet كما فى الصورة التالية :
3_ قم بالنقر على زر الامر التالى حتى تنتهى من الاعدادات المطلوبة و بعد الانتهاء من تحديد كافة المعلومات اللازمة يمنكنك النقر على زر الامر (finsh )ليظهر لك بنية netbeans ....
4_ بالنسبة للفئة MessageReceiver.java و الفئة MessageSender.java سنقوم بادراجهم فى حزمة واحدة package و ليكن بأسم anuThreadSub ......و لفعل ذلك سنتبع الخطوات التالية :
أ_ نقوم بتحديد ايقونة التطبيق ثم كليك يمين ومن القائمة التى ستظهر أختر الامر New ثم الامر java package كما فى الصورة التالية :
ب_سيظهر لك مربع حوارى يطالبك باضافة أسم للحزمة ...أكتب أسم الحزمة فى المكان المخصص و ليكن بأسم anuThreadSub كما فى الصورة التالية :
ج_ ستجد أنه قد تم إضافة ايقونة بأسم الحزمة الجديدة فى التصنيف source package ....قم بتحديد تلك الايقونة ثم كليك يمين و من القائمة التى ستظهر أختر الامر New ثم الامر java Class كما فى الصورة التالية :
د_ سيظهر لك مربع حوارى يطالبك بوضع اسم لهذا الكلاس أو الفئة ......أكتب فى المكان المخصص الاسم MessageReceiver كما فى الصورة التالية :
هـــ_بعد الانتهاء من كتابة اسم الفئة أنقر على زر الامر إنهاء .....لتظهر لك صفحة كتابة الشفرة ليس بها غير الشفرات التالية :
- الكود:
package anuThreadSub;
public class MessageReceiver {
}
_ تحت سطر الامر package anuThreadSub نقوم بأدراج المكتبات اللازمة التالية :
- الكود:
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.lcdui.Form;
- الكود:
public class MessageReceiver extends Thread {
}
- الكود:
public class MessageReceiver extends Thread {
private InputStream thisIs;
private Form thisForm;
private StringBuffer strBuf;
public MessageReceiver(InputStream is, Form passForm) {
this.thisIs = is;
this.thisForm = passForm;
}
public synchronized void run() {
System.out.println("Message Receiver Thread");
while (true) {
int msgByteInt = 0;
strBuf = new StringBuffer();
try {
while (true) {
msgByteInt = thisIs.read();
strBuf.append((char) msgByteInt);
if (msgByteInt == -1 || msgByteInt == '\n') {
break;
}
}
thisForm.append(strBuf.toString());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
_ طالما أستخدمنا Thread فوجب علينا انشاء الطريقة void run و لمزيد من المعلومان عن هذا الكائن يمكنك متابعة الرابط التالى :
_ بداخل الطريقة void run قما بعمل حلقة تكرارية لتمكننا من الرد عند تلقى رسائل من الطرف الاخر ....وقمنا بالاعلان عن المتغير strBuf كمخزن نصى لتخزين سلسلة قابلة للتغيير من الأحرف باستخدام الامر new StringBuffer
_عندما نستخدم الاسلوب read() لقراءة رسالة الدردشة مرة واحدة، فإنه يمكن قراءة فقط كحد أقصى 255 بايت...... ولكن حجم الرسالة الدردشة ربما تكون أكثر من ذلك الحجم. لذلك بعمل حلقة while أخرى لقراءة الرسالة كاملة .
_ فى السطر الخامس عشر ....أستخدمنا الاسلوب read() لقراءة البيانات بالبايت بالتتالى و تخزينة فى المتغير msgByteInt
_ السطر السادس عشر .....قراءة بايت واحد وإلحاقها إلى StringBuffer
_ السطر السابع عشر ....جملة شرطية يتم إرجاع قيمة البايت باعتبارة في النطاق من 0 إلى 255.و إذا لم يتوفر البايت لأنه قد تم الوصول إلى نهاية الدفق، يتم إرجاع قيمة -1
الان أنتهيا من كتابة التعليمات البرمجية للفئة MessageReceiver.java تعالوا الان نقوم بإنشاء الفئة MessageSender.java
و _ كرر الخطوات السابقة من أ حتى د .....ثم أكتب أسم الفئة MessageSender.java .....و بعد الانتهاء من كتابة اسم الفئة أنقر على زر الامر إنهاء .....لتظهر لك صفحة كتابة الشفرة ليس بها غير الشفرات التالية :
- الكود:
package anuThreadSub;
public class MessageSender {
}
_ سنقوم بتعديل الشفرة السابقة على النحو التالى :
_ تحت سطر الامر package anuThreadSub نقوم بأدراج المكتبات اللازمة التالية :
- الكود:
import java.io.IOException;
import java.io.OutputStream;
import javax.microedition.lcdui.TextField;
- الكود:
public class MessageSender extends Thread{
}
- الكود:
public class MessageSender extends Thread{
private OutputStream thisOs;
private String thisSrvChatMsg;
private TextField thisTxtFld;
public MessageSender(OutputStream os, TextField passTxtFld) {
this.thisOs = os;
this.thisTxtFld = passTxtFld;
}
public synchronized void send(String srvChatMsg){
this.thisSrvChatMsg = srvChatMsg;
notify();
}
public synchronized void run() {
System.out.println("Messege Sender Thread");
while (true) {
if(!(thisTxtFld.getString().equals(""))){
thisTxtFld.setString("");
}
if (thisSrvChatMsg == null) {
try {
wait();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
try {
thisOs.write(thisSrvChatMsg.getBytes());
thisOs.write("\n".getBytes());
thisOs.flush();
thisSrvChatMsg = null;
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
}
_قمنا بانشاء الطريقة send لتقوم بارسال النصوص الى الطرف الاخر ....وبداخلها كتبنا الامر notify() وذلك لجعل مؤشر ترابط واحد فى حالة انتظار على شاشة هذا الكائن.
_قمنا بعمل حلقة تكرارية لتشغيل OutputStream حتى نهاية دردشة كاملة والتي يمكن أن تكون أطول من 255 بايت
_ أستخدمنا جملة شرطية داخل الحلقة لمسح الدردشة السابقة من منطقة الكتابة في الحقل النصي
_أستخدمنا جملة شرطية أخرى للتحقق من قيمة thisSrvChatMsg فيتم الانتظار حتى استدعاء مؤشر ترابط آخر ويخطر الأسلوب notify أو notifyAll لهذا الكائن بذلك .
_ اما من السطر thisOs.write يقوم بكتابة النصوص المخزنة فى المتغير thisSrvChatMsg بالبايت ....ويمكنك من انشاء سطر جديد من خلال الامر thisOs.write("\n".getBytes() ..
_ وأخير تعيين قيمة الرسالة thisSrvChatMsg حتى تتم عملية الانتظار
و بهذا نكون قد انتهبنا من الحزمة package anuThreadSub و التى تحتوى على فئتين هما MessageReceiver و MessageSender
ثانيا : إنشاء الفئة ChatClient .. و الفئة ChatServer :
فى البداية سنقوم بتكرار الخطوات السابقة لانشاء حزمة جديدة و ليكن بأسم anuMidSub لاحتواء تلك الفئتين و انشائهما على النحو التالى :
1_ إنشاء الفئة ChatClient ....تلك الفئة ستكون واجهة رسومية بامتداد MIDlet و بالتالى سيتم إنشائها على النحو التالى :
أ_ تحديد ايقونة التطبيق ثم كليك يمين ومن القائمة التى ستظهر أختر الامر New ثم الامر Visual MIDlet كما فى الصورة التالية :
ب_سيظهر لك مربع حوارى يطالبك ببعض المعلومات كأسم الملف فضع ChatClient كأسم و اسم الكلاس الخاص ب ChatClient
ج_بعد الانتهاء من تحديد كافة المعلومات اللازمة للمربع الحوارى السابق قم بالنقر على زر الامر (next) لتظهر لك البنية الرسومية كما فى الشكل التالى :
د_ قم باضافة عدد 2 نافذة Form مع تغير الاسم البرمجى الى sendIpForm و chatForm
النافذة sendIpForm قم وضع عليها عدد 2 عنصر أمر Command مع تغير الاسم البرمجى الى exitCmd و connectCmd .....ثم قم بوضع عدد 1 حقل نصى TextField مع تغير الاسم البرمجى الى ipTxtFld
النافذة chatForm قم بوضع عليها عدد 1 عنصر أمر أمر Command مع تغير الاسم البرمجى الى sendCmd .... .ثم قم بوضع عدد 1 حقل نصى TextField مع تغير الاسم البرمجى الى chatMsgTxtFld ....
ثم نقوم بادراج عدد 1 عنصر تنبية Alert مع تغير الاسم البرمجى الى infoAlert
هــ_كتابة التعليمات البرمجية .....قم بالنقر على التويب source ليتم فتح نافذة كتابة الشفرة و بها بعض الاكواد :
_ ستجد صفحة الكود فيها بعض الشفرات لاستيراد بعض المكتبات ...سنقوم نحن باستيراد المكتبات الاخرى اللازمة على النحو التالى
- الكود:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import anuThreadSub.MessageReceiver;
import anuThreadSub.MessageSender;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;
- الكود:
public class ChatClient extends MIDlet implements CommandListener {
- الكود:
public class ChatClient extends MIDlet implements CommandListener,Runnable {
- الكود:
public void run() {
}
- الكود:
private String chatMsg;
private MessageSender msgSenClass;
private String srvIp;
private SocketConnection socCon;
private DataInputStream is;
private DataOutputStream os;
- الكود:
public void run() {
srvIp = ipTxtFld.getString();
if (srvIp != null && srvIp.length() > 0) {
try {
socCon = (SocketConnection) Connector.open("socket://" + srvIp + ":60000");
is = socCon.openDataInputStream();
os = socCon.openDataOutputStream();
} catch (IOException ex) {
ex.printStackTrace();
}
msgSenClass = new MessageSender(os, chatMsgTxtFld);
msgSenClass.start();
MessageReceiver msgRecClass = new MessageReceiver(is, chatForm);
msgRecClass.start();
infoAlert = new Alert("Server connected successfully.");
display.setCurrent(infoAlert, chatForm);
}
}
_ السطر الخامس ....إنشاء اتصال مأخذ وفتح منفذ لهذا الصدد
_السطر السادس ....جعل المتغير is يقوم باستلام دفق البايت (الرسائل النصية )
_السطر السابع .....جعل المتغير os يقوم بارسال البايت
الاسطر الاخير ....أنشاء كائن جديد من الفئة MessageReceiver لبدء عملية ارسال البيانات
_ سنقوم بالبحث عن الطريقة public void commandAction فى صفحة كتابة الشفرة و ستجدها بها الاكواد التالية :
- الكود:
public void commandAction(Command command, Displayable displayable) {
if (displayable == chatForm) {
if (command == sendCmd) {
}
} else if (displayable == sendIpForm) {
if (command == connectCmd) {
} else if (command == exitCmd) {
}
}
}
- الكود:
public void commandAction(Command command, Displayable displayable) {
if (displayable == chatForm) {
if (command == sendCmd) {
chatMsg = chatMsgTxtFld.getString();
msgSenClass.send(chatMsg);
}
} else if (displayable == sendIpForm) {
if (command == connectCmd) {
new Thread(this).start();
} else if (command == exitCmd) {
notifyDestroyed();
}
}
}
2_ إنشاء الفئة ChatServer ......قم بتكرار الخطوات من أ حتى ج التى استخدمناها فى انشاء الفئة ChatClient .....
أولا : التصميم :
_ثم قم بادراج عدد 3 نافذة Form مع تغير الاسم البرمجى الى chatServerForm و showIpForm و srvChattingFrm
_ النافذة chatServerForm .....قم بوضع عليها عدد 1 عنصر StringItem مع تغير الاسم البرمجى الى startServerStrItem ....ومن نافذة الخصائص لهذا العنصر أجعل الخاصية Appearance تساوى القيمة BUTTON ......و ايضا أجعل الخاصية lable تساوى القيمة Start Chat Server ....
ايضا قم بوضع عنصر شريط التقدم Gauge مع تغير الاسم البرمجى الى gaugeItem ....ومن نافذة الخصائص لهذا العنصر أجعل الخاصية lable تساوى Waiting for client... ...
_ ايضا قم بإضافة عدد 2 عنصر امر Command مع تغير الاسم البرمجى الى startCmd و exitCmd
_ النافذة showIpForm .... قم بوضع عليها عدد 1 عنصر StringItem مع تغير الاسم البرمجى الى ipStrItem ...و ايضا عدد عنصر امر Command مع تغير الاسم البرمجى الى exitCmd
_ النافذة srvChattingFrm .....قم بوضع عليها عدد حقل نصى TextField مع تغير الاسم البرمجى الى chatTxtFld ....و ايضا عدد 2 عنصر امر Command مع تغير الاسم البرمجى الى exitCmd و sendCmd
ثانيا : كتابة التعليمات البرمجية
_ نقوم باستيراد المكتبات الاخرى اللازمة على النحو التالى :
- الكود:
import anuThreadSub.MessageReceiver;
import anuThreadSub.MessageSender;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.ServerSocketConnection;
import javax.microedition.io.SocketConnection;
- الكود:
public class ChatServer extends MIDlet implements CommandListener {
- الكود:
public class ChatServer extends MIDlet implements CommandListener , ItemCommandListener, Runnable {
- الكود:
public void run() {
}
- الكود:
private Display display;
private ServerSocketConnection serSocCon;
private String deviceIp;
private SocketConnection socCon;
private DataInputStream is;
private DataOutputStream os;
private Alert infoAlert;
private String srvChatMsg;
private MessageSender msgSenderClass;
- الكود:
public void run() {
System.out.println("Runnig");
try {
serSocCon = (ServerSocketConnection) Connector.open("socket://:60000");
System.out.println("Open the socket...");
} catch (IOException ex) {
ex.printStackTrace();
}
try {
deviceIp = serSocCon.getLocalAddress();
System.out.println("Get device IP...");
} catch (IOException ex) {
ex.printStackTrace();
}
showIpForm.append(deviceIp);
display.setCurrent(showIpForm);
try {
System.out.println("Waiting for client request...");
socCon = (SocketConnection) serSocCon.acceptAndOpen();
System.out.println("Accepted and open the connection...");
} catch (IOException ex) {
ex.printStackTrace();
}
try {
is = socCon.openDataInputStream();
} catch (IOException ex) {
ex.printStackTrace();
}
try {
os = socCon.openDataOutputStream();
} catch (IOException ex) {
ex.printStackTrace();
}
msgSenderClass = new MessageSender(os, chatTxtFld);
msgSenderClass.start();
MessageReceiver msgReceiverClass = new MessageReceiver(is, srvChattingFrm);
msgReceiverClass.start();
infoAlert = new Alert("Client connected successfully.");
display.setCurrent(infoAlert, srvChattingFrm);
}
السطر الرابع : تعرف الواجهة ServerSocketConnection كمقبس الخادم لاتصال.... وإنشاء مأخذ أاستماع الخادم على المنفذ 60000
السطر التاسع : للحصول على عنوان المضيف (رقم IP)
_ نقوم بإنشاء طريقة أخرى لمسح محتويات الحقل النصى بعد ما يتم الارسال الى الطرف الاخر
- الكود:
public void clear(){
chatTxtFld.setString("");
}
- الكود:
public void commandAction(Command command, Displayable displayable) {
if (displayable == chatServerForm) {
if (command == exitCmd) {
notifyDestroyed();
} else if (command == startCmd) {
new Thread(this).start();
}
} else if (displayable == showIpForm) {
if (command == exitCmd2) {
notifyDestroyed();
}
} else if (displayable == srvChattingFrm) {
if (command == exitCmd3) {
notifyDestroyed();
} else if (command == sendCmd) {
srvChatMsg = chatTxtFld.getString();
msgSenderClass.send(srvChatMsg);
}
}
}
المصدر الكامل للكود /
https://github.com/AnujAroshA/Mobile-Application/tree/master/MyChatApp
وغدا ستم رفع المشروع فى المرفقات
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
أشكرك أخى أحمد على هذا المجهود ......
م/موسي- الاشراف
- تاريخ التسجيل : 18/02/2011
المساهمات : 178
النقاط : 346
التقيم : 12
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
مشكوووووووووووووووور جدا على مجهود على الشرح الرائع
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
أستاذ احمد مشكور جدا على الدرس المفيد
بس لدي بعض استفسارات
السؤال الأول :
ثانيا : إنشاء الفئة ChatClient .. و الفئة ChatServer :
فى البداية سنقوم بتكرار الخطوات السابقة لانشاء حزمة جديدة و ليكن بأسم anuMidSub لاحتواء تلك الفئتين و انشائهما على النحو التالى :
هل يجب ان تكون بحزمة منفردة كم في الشكل الاول
بس لدي بعض استفسارات
السؤال الأول :
ثانيا : إنشاء الفئة ChatClient .. و الفئة ChatServer :
فى البداية سنقوم بتكرار الخطوات السابقة لانشاء حزمة جديدة و ليكن بأسم anuMidSub لاحتواء تلك الفئتين و انشائهما على النحو التالى :
هل يجب ان تكون بحزمة منفردة كم في الشكل الاول
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
[ltr]السؤال الثاني :
سنقوم نحن بتعديل الكود السابق و ذلك بإضافة الامر Runnable ليصبح بالشكل التالى :[/ltr]
[ltr]الرمز:[/ltr]
[ltr]public class ChatClient extends MIDlet implements CommandListener,Runnable {[/ltr]
[ltr]
_ ستجد خطوط حمراء تدل على وجود خطا فى الكود ...وذلك بسبب أن الواجهة Runnable تتطلب انشاء الطريقة void run لذلك سيتم إنشائها على النحو التالى :[/ltr]
[ltr]الرمز:[/ltr]
[ltr] public void run() {
}[/ltr]
هل يجب ان تكون بهذه الطريقة
public class ChatClient extends MIDlet implements CommandListener,Runnable {
public void run() {
بداخلها التعليمات الخاصة void run
}
لكن عندما اضع التعليمات يتكرر الخطوط الحمراء التي تدل على أخطاء
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
أخى الكريم أهلا وسهلا بكم ....
بالنسبة لسؤالك الاول ....ففى الشرح قمت بعمل عدد 2 حزمة و كما هو موجود فى الصورة التى ارفقتها ...ولكن ليس هذا بالضرورة عمل ذلك فيمكنك مثلا مثلا عمل حزمة واحد بها جميع الفئات الاربعة لكن فى تلك الحالة لن نقوم باستخدام باستيراد الفئة كما استخدمناها فى الكود التالى :
على العموم أنتظرى بالمساء سأقوم برفع الكود اليك لانى حاليا فى العمل و الكود فى جهازى الخاص بالبيت
بالنسبة لسؤالك الاول ....ففى الشرح قمت بعمل عدد 2 حزمة و كما هو موجود فى الصورة التى ارفقتها ...ولكن ليس هذا بالضرورة عمل ذلك فيمكنك مثلا مثلا عمل حزمة واحد بها جميع الفئات الاربعة لكن فى تلك الحالة لن نقوم باستخدام باستيراد الفئة كما استخدمناها فى الكود التالى :
- الكود:
import anuThreadSub.MessageReceiver;
import anuThreadSub.MessageSender;
على العموم أنتظرى بالمساء سأقوم برفع الكود اليك لانى حاليا فى العمل و الكود فى جهازى الخاص بالبيت
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
أخى أحمد أرفع اليك قبعتى تقديرا لمجهودك فى شرح هذا الدرس ....الله يجازيك كل خير عنا
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
أخى الكريم السورس موجود فى المرفقاتو ارجوا المفرقات و ارجوا المعذرة على عدم قدرتى رفعه بالامس
- المرفقات
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
مشكور لا يكفي شكرنا ولو شكرناك بعدد ورق الشجر
مشكوووووور
مشكوووووور
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
استاذ اسف كتير على استفساراتي الكثيرة وبشكرك على الرد ....استاذ احمد ممكن اعرف شو سبب لما بشغل البرنامج على جوالات يعطي لا يوجد شيء بعرضه
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
جميل جدا ....لكن عندى استفسار .....:
التطبيق بتكون من 2 واجهة ....السرفر و الخادم ....و علشان أجرب السرفر لازم يكون الخادم شغال و العكس صحيح ....و حضرتك عارف اننا لن نستطيع غير تشغيل محاكى واحد للجوال ؟
السؤال الان : كيف أستطيع أن أختبر التطبيق على جهاز الكمبيوتر ؟
التطبيق بتكون من 2 واجهة ....السرفر و الخادم ....و علشان أجرب السرفر لازم يكون الخادم شغال و العكس صحيح ....و حضرتك عارف اننا لن نستطيع غير تشغيل محاكى واحد للجوال ؟
السؤال الان : كيف أستطيع أن أختبر التطبيق على جهاز الكمبيوتر ؟
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
الصورة تتضمن
this application does not use the screen and runs in the background
this application does not use the screen and runs in the background
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
أخى الكريم مرحبا بك و لا تتأسف على شىء نحن جميعا سعداء بكل استفساراتك و ما يحزننا هو عدم قدرتنا على الاجابة على اى استفسار لك ....أما بالنسبة لسؤال فنعتذر عن الخطأ الوارد ....و الحل سيكون على النحو التالى :
أولا ....فى الفئة ChatClient أبحث عن الطريقة startApp ستجد بها الاكواد التالية :
تحياتى لك
أولا ....فى الفئة ChatClient أبحث عن الطريقة startApp ستجد بها الاكواد التالية :
- الكود:
public void startApp() {
display = Display.getDisplay(this);
midletPaused = false;
}
- الكود:
public void startApp() {
display = Display.getDisplay(this);
getSendIpForm();
display.setCurrent(sendIpForm);
getChatForm();
midletPaused = false;
}
- الكود:
public void startApp() {
display = Display.getDisplay(this);
getChatServerForm();
display.setCurrent(chatServerForm);
getShowIpForm();
getSrvChattingFrm();
}
تحياتى لك
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
الكريمة زهراء بداية أشكرك على مجهودك فى المنتدى ....فشكرا لكى اتيها الكريمةزهراء كتب:جميل جدا ....لكن عندى استفسار .....:
التطبيق بتكون من 2 واجهة ....السرفر و الخادم ....و علشان أجرب السرفر لازم يكون الخادم شغال و العكس صحيح ....و حضرتك عارف اننا لن نستطيع غير تشغيل محاكى واحد للجوال ؟
السؤال الان : كيف أستطيع أن أختبر التطبيق على جهاز الكمبيوتر ؟
أما بالنسبة لسؤال ....فمن الذى قال لكى أننا لا نستطيع تشغيل غير محاكى واحد ....الكريمة زهراء نحن نستطيع فعل ذلك بكل بسهولة .....فقط قومى بتشغيل التطبيق ...سيظهر لك محاكى لتشغيل الطبيق ....فى ذلك الوقت و أثناء التطبيق فى قيد التشغيل قومى تختار محاكى Device مختلف عما قد حددته فى بداية إنشاء المشروع عن طريق تحديد الامر Customize من قائمة المهام فى NetBeans كما فى الصورة التالية :
ثم قومى بالنقر على زر تشغيل التطبيق سيظهر لك المحاكى الاخر بالاضافة الى المحاكى الاول الذى مازال فى قيد التشغيل ....حينها تستطيعى تشغيل السرفر أو الخادم من اي منهما كما فى الشكل التالى :
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
جزاك الله خيرا على كل ما تقدمه لنا من علم
ذوكا- .....
- تاريخ التسجيل : 26/05/2013
المساهمات : 92
النقاط : 156
التقيم : 12
الدولة :
الجنس :
سؤال
استاذ احمد انا للاسف لم افهم طريقة مل برنامج شات
اولا نقوم بتشغيل شات سيرفر ويقوم باعطأنا الاي بي ثم نفتح برنامج Chat Client ونقوم بكتابة رقم الاي بي ثما اتصال
لم افهم الطريقة جيدا
اذا اردت تحدث مع شخص ثاني على جهاز اخر ماذا يجب العمل
بعد تحميل التطبيق لديه ماذانفعل
وشكرا
اولا نقوم بتشغيل شات سيرفر ويقوم باعطأنا الاي بي ثم نفتح برنامج Chat Client ونقوم بكتابة رقم الاي بي ثما اتصال
لم افهم الطريقة جيدا
اذا اردت تحدث مع شخص ثاني على جهاز اخر ماذا يجب العمل
بعد تحميل التطبيق لديه ماذانفعل
وشكرا
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
أشكرك أخى أحمد على التوضيح ...وفعلا فكرة لم تخطر على بالى ابدا أن يكون الحل بتلك السهولة
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
أيمن الإبراهيم كتب:استاذ احمد انا للاسف لم افهم طريقة مل برنامج شات
اولا نقوم بتشغيل شات سيرفر ويقوم باعطأنا الاي بي ثم نفتح برنامج Chat Client ونقوم بكتابة رقم الاي بي ثما اتصال
لم افهم الطريقة جيدا
اذا اردت تحدث مع شخص ثاني على جهاز اخر ماذا يجب العمل
بعد تحميل التطبيق لديه ماذانفعل
وشكرا
اخى الكريم ايمن ....هذا مجرد تطبيق بسيط لتوضيح فكرة عمل الدردشة للجوالات و التى تقوم على الاتصال بين السرفر و العميل عن طريق رقم ip .....اما سؤالك عن كيفية اعطاء رقم الاى بى للطرف الاخر وهو بعيد عنك حتى يتم الاتصال ممكن ذلك عن طريقة ارساله عن طريقة رسالة قصيرة له ....لكن هذا ليس من الاحترافية وكل ما علينا الان هو كيفية تطوير هذا التطبيق استخدام ما يسمى Server API بدلا من رقم اى بى و التى تستخدمها معظم تطبيقات الدردشة العملاقة مثل NIMBUZZ ....وانتظر منى درس فى ذلك غدا او بعد غد على الاكثر
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
مشكور استاذ احمد
انا اقصد هل يجب تشغيل الجهاز الاخر على نفس الاي بي الاول
او يجب ايضا على موبايل الثاني تشغيل اولا تطبيق السرفر شات وكتابة الاي بي خاص بموبايل التاني
وشكرا على جهودك
انا احاول تطوير برنامج مثل nimbuzz
انا اقصد هل يجب تشغيل الجهاز الاخر على نفس الاي بي الاول
او يجب ايضا على موبايل الثاني تشغيل اولا تطبيق السرفر شات وكتابة الاي بي خاص بموبايل التاني
وشكرا على جهودك
انا احاول تطوير برنامج مثل nimbuzz
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
أخى الكريم أيمن ....أهلا وسهلا بك و شكراً جزيلا على مجهودك الكبير فى المنتدى ....بالنسبة لفكرة عمل التطبيق فهى على النحو التالى :أيمن الإبراهيم كتب:مشكور استاذ احمد
انا اقصد هل يجب تشغيل الجهاز الاخر على نفس الاي بي الاول
او يجب ايضا على موبايل الثاني تشغيل اولا تطبيق السرفر شات وكتابة الاي بي خاص بموبايل التاني
وشكرا على جهودك
انا احاول تطوير برنامج مثل nimbuzz
_ اولا يتم تشغيل الخادم ChatServer ...ستظهر لك نافذة بها شريط تقديم و تخبرك بأننا فى حاله أنتظار العميل ...أنقر فوق الامر OK ليظهر لك عنوان الاى بى لديك كما فى الصورة التالية :
_ الان قم بتشغيل العميل ChatClient على محاكى أخر ...لتظهر لك نافذة تطالبك بادخال رقم الاى بى المراد الاتصال به ....قم بادخال رقم الاى بى الذى حصلنا عليه فى الخطوة السابقة كما فى الصورة التالية :
_ من خلال ChatClient ستجد فى الجهة اليمنى قائمة بها الامر "أتصال"....قم بالنقر عليه ليتم الاتصال بين ChatClient و ChatServer وظهور رسالة فى كلا الطرفين تفيد عملية الاتصال كما فى الاشكال التالية :
_ وهكذا تم الاتصال بين الطرفين و سيظهر لكلا الطرفين شاشة بها مربع نص لارسال الرسال بينهما كما فى الشكل التالى :
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
بسم الله ما شاء الله عليكم يا جماعة ....كان نفسى اكون مشتركة معاكم فى الحوارى بس انا مبتدئة جدا فى الجافا ....اعمل انا اية بقى
لمار عادل- ..
- تاريخ التسجيل : 29/05/2013
المساهمات : 28
النقاط : 46
التقيم : 2
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
استاذ احمد سؤال
لما عم اكتب رقم الاي بي في chat client واظغط اتصال
تظهر رسالة : يوجد استثناء لم يتم التعامل معه اغلاق التطبيق
لما عم اكتب رقم الاي بي في chat client واظغط اتصال
تظهر رسالة : يوجد استثناء لم يتم التعامل معه اغلاق التطبيق
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
الاخ الكريم أيمن ....التطبيق عندى شغال جيدا بدون ظهور الخطأ المشار اليه ...لذلك ربما يكون السبب فى ذلك هو تغيرك لبعض الاكواد الواردة فى السورس كود ....لذلك قم بتحميل السورس كود مرة أخرى مع تعديل الخطأ الذى تم حله فى المشاراكات السابقة وهوأيمن الإبراهيم كتب:استاذ احمد سؤال
لما عم اكتب رقم الاي بي في chat client واظغط اتصال
تظهر رسالة : يوجد استثناء لم يتم التعامل معه اغلاق التطبيق
this application does not use the screen and runs in the background
ثم قم بتشغيل التطبيق إن شاء الله سيعمل لديك بنجاح
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
Thank you that is very important
Programmer_78- .
- تاريخ التسجيل : 12/08/2014
المساهمات : 3
النقاط : 3
التقيم : 0
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
Programmer_78 كتب:Thank you that is very important
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
رد: تعلم كيفية إنشاء تطبيق دردشة بيسط للجوالات بأستخدام J2ME مع NetBeans
مشكور لا يكفي شكرنا
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
شركة تسليك مجاري بالرياض
شركة عزل اسطح بالرياض
شركة عزل فوم بالرياض
شركة رش مبيدات بالرياض
شركة نقل اثاث بالرياض
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: مشاريع مفتوحة المصدر Java App
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 4:45 pm من طرف moslema_r
» 7 دراسات تقدمها أبرز شركات دراسة جدوى في الرياض لدراسة وتحليل مشروعك
أمس في 4:39 pm من طرف moslema_r
» استثمارات واعدة في القطاع الصحي مع أفضل شركة دراسة جدوى معتمدة في الإمارات
أمس في 4:33 pm من طرف moslema_r
» أفضل مكتب استشارات اقتصادية في قطر: دليل شامل لاختيار الشريك الأمثل
أمس في 4:28 pm من طرف moslema_r
» استثمر بثقة مع أفضل مكتب استشارات اقتصادية في عمان
أمس في 4:22 pm من طرف moslema_r
» ما هي المصانع المربحة؟
أمس في 3:57 pm من طرف moslema_r
» أفضل مكتب دراسات جدوى في البحرين الشريك الاستثماري الأفضل لك
أمس في 3:46 pm من طرف moslema_r
» أفكار مشاريع صغيرة مربحة جدا وغير مكلفة يمكنك البدء بها اليوم
أمس في 3:40 pm من طرف moslema_r
» برمجة وتصميم تطبيق جوال لنادى رياضي
أمس في 3:33 pm من طرف moslema_r
» تصميم تطبيق جوال لتوصيل الطلبات
أمس في 3:27 pm من طرف moslema_r