-
1 ضمیمه
Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
پیش نیاز:
ارتباط TCP در جاوا
Thread در جاوا (قسمت اول:مفاهیم اولیه Thread)
Thread در جاوا (قسمت دوم:ایجاد ترد با استفاده از روش بسط کلاس Thread)
Thread در جاوا (قسمت سوم:ایجاد ترد با استفاده از واسط Runnable)
پیاده سازی چت با استفاده از مالتی ترد:
در آموزش برقراری ارتباط از نوع TCP نمونه یک چت ساده پیاده سازی شد. در این برنامه موارد زیر وجود داشت که برای رفع آنها می بایست از تکنولوژی ترد استفاده شود:
- کلاینت شروع کننده و خاتمه دهنده چت بود بدین معنا که سرور نمی توانست قبل از اینکه پیامی از کلاینت دریافت کند اقدام به ارسال پیام نمیاد.
- مکالمه بصورت یک در میان بود یعنی کلاینت مطلبی را ارسال می کرد و خود در حالت شنود قرار می گرفت در طرف دیگر سرور که در حالت شنود بود پیام را دریافت نموده و به حالت ارسال تغییر وضعیت می داد.
- مکالمه با ارسال QUIT از طرف کلاینت خاتمه پیدا می کرد یعنی سرور قادر به خاتمه ارتباط نبود.
دلیل تمامی موارد بالا در این نکته نهفته است که برنامه ما در یک زمان عمل ارسال و دریافت را نمی توانست انجام دهد.
همانطور که قبلا اشاره شد برای ایجاد همزمانی در برنامه می بایست از ترد استفاده کرد در برنامه چت مورد نظر دو بخش اساسی وجود دارد:
- بخشی که مسئول دریافت اطلاعات از کاربر و ارسال آنها می باشد.
sendstring=inp.next();
output.writeUTF (sendstring);
- بخشی که مسئول دریافت اطلاعات از سمت ارسال کننده و نمایش آنها می باشد.
request = input.readUTF ();
System.out.println(request);
هر دو بخش بالا باید بصورت ترد هایی جداگانه ایجاد شوند. در زیر نحوه پیاده سازی این دو بخش آمده است لازم به ذکر است که هر دو از روش بسط کلاس ترد ساخته شده اند:
ارسال اطلاعات:
class send extends Thread
{
private DataOutputStream output;
public send(DataOutputStream s) throws Exception{
output=s;
}
public void run()
{
String sendstring="";
do{
Scanner inp = new Scanner(System.in);
try{
sendstring=inp.next();
output.writeUTF (sendstring);
}catch(IOException e){}
}while(true);
}
}
دریافت اطلاعات:
class recv extends Thread
{
private DataInputStream input;
private DataOutputStream output;
public recv(DataInputStream s,DataOutputStream t) throws Exception{
input=s;
output=t;
}
public void run()
{
String request="";
do{
try{
request=input.readUTF();
if (request.equals("Q")){
output.writeUTF("Q");
System.exit(0);}
System.out.println("CLIENT:"+request);
}catch(IOException e){}
}while(true);
}
}
ما بقی آنچه در برنامه مشاده می کنید مانند همان مثال اولیه می باشد. فقط کافیست بعد از انجام مراحل اولیه که همان ایجاد سوکت - ایجاد ارتباط – و معرفی Stream های ورودی و خروجی دو ترد از انواع ایجاد شده در بالا تعریف نمود:
send Tsend =new send(output);
recv Trecv=new recv(input,output);
Stream های ورودی و خروجی ایجاد شده به عنوان پارامتر به این دو ترد ارسال می شود. حال کافیست دو ترد مورد نظر را اجرا کنیم:
Tsend.start();
Trecv.start();
برای خاتمه برنامه از متد System.exit(0) استفاده شده است یعنی چه کلاینت و چه سرور با دریافت کارکتر Q کل سیستم را متوقف می کنند. این روش به غیر از ساده سازی آموزش بالا استفاده دیگری برای ما ندارد چون طبیعیست قرار نیست کا برنامه ما با بسته شدن ارتباط دو نفر به طور کامل متوقف شود!!! چاره چیست ؟؟ استفاده از حلقه While و گذاشتن شرط تا این مرحله جوابگو نمی باشد چرا که به فرض دریافت Q در قسمت مربوط به دریافت اطلاعات فقط این بخش را می توانیم متوقف کنیم(اگر شرطWhile باشد) و بخش مربوط به ارسال همچنان فعال باقی می ماند چون اصولا دریافت و ارسال دو ترد جداگانه هستند چاره کار در این است که بعد از دریافت Q علاوه بر غیر فعال کردن ترد دریافت ترد ارسال نیز از درون ترد دریافت غیر فعال شود .
مشکل دسترسی به ترد ارسال از درون ترد دریافت با فرستادن ترد ارسال به عنوان پارامتر به ترد دریافت حل می شود. تنها سوالی که در اینجا مطرح است چگونگی توقف یک ترد می باشد که در قسمت بعدی که بررسی متد های مربوط به ترد ها می باشد به توضیح آن می پردازیم.
کد سرور و کلاینت مربوط به این آموزش ضمیمه می باشد.
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
سلام
خیلی ممنون از آموزش کامل و کدهایی که در مورد برنامه چت سرور گذاشتین
از بگم من خیلی تازه کارم و اگه سوالاتم خیلی پیش پا افتاده است ببخشید
من همشونو داونلود کردم
اما نمیدونم چطور خروجی رو ببینم
کامپایلش خیلی زمان میبره
من از NetBeans استفاده میکنم و نمیدونم برای اجرا باید چه مراحلی رو دنبال کنم
لطفا منو راهنمایی کنین
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
با سلام شما کافیه توی نت بینز دو تا فایل جدید باز کنید و مدها رو کپی کنید اونجا بعد اول فایل مربوط به سرور رو اجرا کنید البته به این صورت که روی نام فایل کلیک راست کنید بعد گزینه run رو انتخاب کنید و بعد به همین روش کلاینت رو هم اجرا کنید توی بخش output که پایین صفحه نت بینز میاد میشه خروجی رو دید.
اگه احساس می کنید توضیحات نتونسته کمک کنه بگید تا کلا برقراری چت ساده با نت بینزو بذارم تو سایت.
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
خیلی ممنون از راهنماییتون
من این کار رو انجام دادم اما ازم ارور میگیره
این کل اون چیزیه در خروجی نشون میده
java.lang.NoClassDefFoundError: threadclient
Caused by: java.lang.ClassNotFoundException: threadclient
at java.net.URLClassLoader$1.run(URLClassLoader.java: 200)
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:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:2 51)
at java.lang.ClassLoader.loadClassInternal(ClassLoade r.java:319)
Exception in thread "main"
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
میشه بگید دقیقا چه مراحلی رو طی می کنید؟
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
سلام دوست من.
با تشکر از manvaputra باید بگم که این برنامه رو شخصا تست کردم و کاملا درست کامپایل می شه. احتمالی که من می دم، اینه که شما فایل های جدیدی رو که درست می کنید با نام کلاسهای برنامه یکسان نیست. شما باید فایل هایی با نام های Threadclientبرای کلاینک و Threadserver برای سرور درست کنید بعد متن این کلاسها را از فایل های Atach شده کپی کنید. در netBeans هم گرینه ی new JavaClass رو برای ایجاد فایل ها انتخاب کنید.
یا حق!
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
با تشکر از دوستان
مراحلی که من دنبال میکنم
اول در Netbeans یه پروژه جدید ایجاد میکنم
در اون پروژه یه New file... ایجاد میکنم و اسم اون رو Treadserver میذارم
کل محتویاتش رو پاک میکنم و محتویات فایل Threadserver که Attach شده رو داخلش کپی میکنم
روی اسم کلاس راست کلیک میکنم و Run File رو میزنم
که بهم خروجی زیر رو میده:
java.lang.NoClassDefFoundError: chat/Threadserver
Caused by: java.lang.ClassNotFoundException: chat.Threadserver
at java.net.URLClassLoader$1.run(URLClassLoader.java: 200)
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:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:2 51)
at java.lang.ClassLoader.loadClassInternal(ClassLoade r.java:319)
Exception in thread "main"
Java Result: 1
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
با سلام مجدد طبق روالی که رفتید مشکلی نداره من برای اطمینان مجددا چک کردم الان ولی یه نکته توی برنامه شما داره از chat/Threadserver ایراد می گیره! به نظر این chat/ اضافه میاد ببینید کجا اشتباهن نوشتید مطمئن باشید تا حل کامل مشکل با شما هستیم
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
سلام دوست من.
اول یه پروژه جدید باز کن و اسمی رو برای وارد کن.
http://www.freezpic.com/images/8b5gsospusy2qvwcgy5.jpg
http://www.freezpic.com/images/vsgv8q7cb94xmzr7ksh1.jpg
* - پروژه شما ساحته می شود. جال باید فایل ها رو بسازید. بر روی قسمت مشحص شده راست کلیک کنید و new سپس Java Class رو انتخاب کنید.
http://www.freezpic.com/images/fq63rt30bzews6quo49.jpg
احتمالا مشکل قبلی شما در ایجاد نکردن این فایل بوده است ( بر اساس آخرین مطلب ارسالی شما)
http://www.freezpic.com/images/w1du4exz7i05vsg48br6.jpg
حال کد برنامه را کپی کنید و در فایل ایجاد شده past کنید.
http://www.freezpic.com/images/rkalnd7smsy9tyit3tz8.jpg
http://www.freezpic.com/images/9cohfos8o1oqv5d67kf.jpg
جال برنامه را اجرا کنید.
http://www.freezpic.com/images/k9qigugu47jlxh2c119.jpg
برای ایجاد فایل Client مراحل بالا را از قسمتی که با * مشخص شده ، دوباره انجام دهید.
http://www.freezpic.com/images/yxj410oyhm3zu3epzseh.jpg
http://www.freezpic.com/images/helzajjkbsjzku5h4dy6.jpg
باز هم اگر مشکلی در اجرای برنامه پیش آمده اعلام کنید.
موفق و پیروز
یا حق!
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
سلام
خیلی خیلی ممنون بابت زحمتی که کشیدین
منم مراحل رو همونطور دنبال کردم اما نتیجه همون قبلی شد
java.lang.NoClassDefFoundError: thchat/Threadserver
Caused by: java.lang.ClassNotFoundException: thchat.Threadserver
at java.net.URLClassLoader$1.run(URLClassLoader.java: 200)
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:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:2 51)
at java.lang.ClassLoader.loadClassInternal(ClassLoade r.java:319)
Exception in thread "main"
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)
دقیقا همون مشکل قبلی...
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
سلام دوست من.
پسوند فایل ها رو به .java تغییر بده. یعنی مثلا فایل سرور بشه : Threadserver.java . کلاینت هم همین طور. بعد کل فایل رو Copy کن و توسی یه پروژه ای که قبلا ساختی تو یکی از Package ها Past کن. روش راست کلیک و Run file رو بزن. واسه کلاینت هم همین طور.
امید وارم که درست بشه.
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
اشکال این تکه برنامه تو اینه که این برنامه اصلا کلاس main نداره. شما فقط Theradها رو برنامه نویسی کردین و اصلا کلاس mainدرست نکردین.من این برنامه رو دارم و خیلی خوب کار می کنه ،هر کس می خواد می تونه بهم ایمیل بزنه تا من کل برنامه رو واسش attach کنم.
یا حق
-
1 ضمیمه
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
اشکال این تکه برنامه تو اینه که این برنامه اصلا کلاس main نداره. شما فقط Theradها رو برنامه نویسی کردین و اصلا کلاس mainدرست نکردین.من این برنامه رو دارم و خیلی خوب کار می کنه .
هر کس اشکال یا سوالی داره،تا اونجایی که می تونم بهش کمک می کنم،اینم ایمیلم:
فایل رو واستون اتچ کردم فقط کافیه اونو تو netbeans اجرا کرده و نتیجه رو ببینین.
یا حق
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
نقل قول:
شکال این تکه برنامه تو اینه که این برنامه اصلا کلاس main نداره. شما فقط Theradها رو برنامه نویسی کردین و اصلا کلاس mainدرست نکردین.
دوست عزیز سلام شما اگه مراحل این آموزش رو از اول قدم به قدم طی می کردید حتی توی صفحه قبل متوجه وجود تابع main می شدید . و اصولا سوال فلسفی اینجاست که برنامه چطور بدوم تابع main امکان اجرا شدن داره!
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
نقل قول:
من این برنامه رو دارم
اصولا هدف از این تاپیک آموزش بوده نه ارایه برنامه! برنامه شما رو هم چک کردم هیچ جای این آموزش از کد شما کپی برداری نشده پس دوست عزیز بهتره بگیم شما برنامه ای مشابه کد موجود در این آموزش رو دارید
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
با سلام خدمت همه دوستان
برنامه ای را که دوست عزیزمان manvaputra در این تاپیک قرار داده اند، اجرا نمودم؛ که بدون هیچ گونه مشکلی اجرا شد.
*** بهتر است دوست عزیزمان manvaputra نحوه اجرای اینگونه برنامه ها را نیز به دوستان آموزش دهند تا جای هیچ گونه شک و شبهه ای باقی نماند. (البته این یک پیشنهاد است و امیدوارم رنجش خاطر manvaputra عزیز را فراهم نکرده باشد.)
موفق و سربلند باشید.
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
نقل قول:
* بهتر است دوست عزیزمان manvaputra نحوه اجرای اینگونه برنامه ها را نیز به دوستان آموزش دهند تا جای هیچ گونه شک و شبهه ای باقی نماند. (البته این یک پیشنهاد است و امیدوارم رنجش خاطر manvaputra عزیز را فراهم نکرده باشد.)
سلام دوست عزيز ممنون از پيشنهادتون ، حتما ، راستي اگه مايليد مي تنونيد نحوه اجرا رو خودتون آموزش بديد من هميشه از كار گروهي بيشتر خوشم مياد تا تك نفره
با تشكر
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
سلام.اول از همه تشکر میکنم از شما بابت گذاشتن این مطلب مفید
سوالی که برای من پیش اومد این هست که اگه من بخوام یک سرور داشته باشم که 2 تا کلاینت رو بهم مرتبط کنه تا فقط اون 2 تا کلاینت بخوان با هم چت کنند چیکار باید کرد؟
منظورم اینه که کافیه کد کلاینت رو در 2 سیستم کپی کنیم و ترد رو از روی سرور برداشته و ادامه بدیم؟
مرسی.
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
نقل قول:
نوشته شده توسط
pegetive_2010
سلام.اول از همه تشکر میکنم از شما بابت گذاشتن این مطلب مفید
سوالی که برای من پیش اومد این هست که اگه من بخوام یک سرور داشته باشم که 2 تا کلاینت رو بهم مرتبط کنه تا فقط اون 2 تا کلاینت بخوان با هم چت کنند چیکار باید کرد؟
منظورم اینه که کافیه کد کلاینت رو در 2 سیستم کپی کنیم و ترد رو از روی سرور برداشته و ادامه بدیم؟
مرسی.
ببینید یک سناریوی نظری این می تونه باشه (نظری چون اگه بخوام درگیر انجامش بشم باید یه دوره ای انجام بدم :خجالت: ):
سرور شما به هر دو (یا هر چند تای دیگه) کلاینت گوش میده، توی پیغام فرستاده شده از کلاینت برای سرور باید نشونی کلاینت مقصد قرار داده شده باشه، حالا سرور به عنوان واسط میاد اون پیغام رو به کلاینت مقصد میفرسته
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
آقا مرسی.یه راهنمایی هم درباره تبدیل از حالت کنسول به حالت فرم و.......بکنید.به جای اجرا در کنسول دریافت اطلاعات در فرم باشه
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
با سلام ، حالت فرمش هم کاری نداره شما فرمتو طراحی کن ، بعد او دریافت و ارسال اطلاعات رو توی مثلا textbox نمایش بده.
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
با سلام
من یه مشکلی دارم که فقط کنم مربوط به ویزاردی بودن نت بینز میشه.
ببینید من یه Jframe تو نت بینز ساختم و ظاهرشو به دلخواه خودم عوض کردم، داخل این فرمم از چندتا thread مختلف استفاده میکنم، ولی وقتی یکی از این thread هارو sleep میکنم یا suspend میکنم کل تردهای برنامم همشون باهم sleep یا suspend میشن. همین کارو تو یه کلاس دیگه که دستی نوشتم انجام میدم ولی هیچ مشکلی پیش نمیاد و وقتی یکی از تردها رو suspend میکنم بقیه به کارشون ادامه میدن. حدسی که من میزنم اینه که مشکل به اون بخشی مربوط میشه که خود نت بینز بصورت خودکار کدهای مربوط به فریم رو تولید میکنه. الانم چون دیگه کلی فرم طراحی کردم اصلا امکانش نیست این همرو دوباره بشینم دستی طراحی کنم. به نظرتون چی کار باید بکنم!؟؟؟؟
----------------------
مشکل حل شد. منتفیه!
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
باسلام خدمت همه دوستان عزیز.من میخوام بااستفاده از سوکت و ترد برنامه ای بنویسم که کامپیوترشماره1به کامپیوتر شماره 2و3 داده هایی را ارسال کند و کامپیوتر های 2و3 این داده ها را مرتب کرده وسپس به کامپیوتر شماره 4 بفرستد.نمیدونم از کجا باید شروع کنم.اگه راهنمایی کنید یه دنیا ممنون میشم
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
نقل قول:
نوشته شده توسط
nilofar22
باسلام خدمت همه دوستان عزیز.من میخوام بااستفاده از سوکت و ترد برنامه ای بنویسم که کامپیوترشماره1به کامپیوتر شماره 2و3 داده هایی را ارسال کند و کامپیوتر های 2و3 این داده ها را مرتب کرده وسپس به کامپیوتر شماره 4 بفرستد.نمیدونم از کجا باید شروع کنم.اگه راهنمایی کنید یه دنیا ممنون میشم
چند حالت داری
یکیش اینه:
اینکه 2 و 3 به صورت مستقیم به 1 وصل بشن وread کنن از socket ، در همین زمان (در thread) هردو (3 و 2) به 4 وصل بشن و 4 مقدار هر کدام رو بگیره!
فقط بدون که 1 و 4 باید multy server باشن (یعنی به ازای هر کسی که بشه وصل میشه سوکتش رو بگیره و پاس بده به یه کلاس (که این کلاس در هر بار گرفتن مقدار سوکت باید new بشه) )
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
ممنون بابت راهنماییت.ولی من با کد سوکت و ترد اشنا نیستم راستی باید کامپیوترهای شماره 2و3 داده ها را مرتب کنن بعد به کامپیوتر4بفرستندرابطه شان مثل درخت میماند.اگه یه مثال از سوکت وترد نوشته شده در نت بینز را بهم نشون بدیدممنون میشم
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
نقل قول:
نوشته شده توسط
manvaputra
نقل قول:
نوشته شده توسط
manvaputra
- کلاینت شروع کننده و خاتمه دهنده چت بود بدین معنا که سرور نمی توانست قبل از اینکه پیامی از کلاینت دریافت کند اقدام به ارسال پیام نمیاد.
- مکالمه بصورت یک در میان بود یعنی کلاینت مطلبی را ارسال می کرد و خود در حالت شنود قرار می گرفت در طرف دیگر سرور که در حالت شنود بود پیام را دریافت نموده و به حالت ارسال تغییر وضعیت می داد.
- مکالمه با ارسال QUIT از طرف کلاینت خاتمه پیدا می کرد یعنی سرور قادر به خاتمه ارتباط نبود.
دلیل تمامی موارد بالا در این نکته نهفته است که برنامه ما در یک زمان عمل ارسال و دریافت را نمی توانست انجام دهد.
همانطور که قبلا اشاره شد برای ایجاد همزمانی در برنامه می بایست از ترد استفاده کرد در برنامه چت مورد نظر دو بخش اساسی وجود دارد:
- بخشی که مسئول دریافت اطلاعات از کاربر و ارسال آنها می باشد.
sendstring=inp.next();
output.writeUTF (sendstring);
- بخشی که مسئول دریافت اطلاعات از سمت ارسال کننده و نمایش آنها می باشد.
request = input.readUTF ();
System.out.println(request);
هر دو بخش بالا باید بصورت ترد هایی جداگانه ایجاد شوند. در زیر نحوه پیاده سازی این دو بخش آمده است لازم به ذکر است که هر دو از روش بسط کلاس ترد ساخته شده اند:
ارسال اطلاعات:
class send extends Thread
{
private DataOutputStream output;
public send(DataOutputStream s) throws Exception{
output=s;
}
public void run()
{
String sendstring="";
do{
Scanner inp = new Scanner(System.in);
try{
sendstring=inp.next();
output.writeUTF (sendstring);
}catch(IOException e){}
}while(true);
}
}
دریافت اطلاعات:
class recv extends Thread
{
private DataInputStream input;
private DataOutputStream output;
public recv(DataInputStream s,DataOutputStream t) throws Exception{
input=s;
output=t;
}
public void run()
{
String request="";
do{
try{
request=input.readUTF();
if (request.equals("Q")){
output.writeUTF("Q");
System.exit(0);}
System.out.println("CLIENT:"+request);
}catch(IOException e){}
}while(true);
}
}
ما بقی آنچه در برنامه مشاده می کنید مانند همان مثال اولیه می باشد. فقط کافیست بعد از انجام مراحل اولیه که همان ایجاد سوکت - ایجاد ارتباط – و معرفی Stream های ورودی و خروجی دو ترد از انواع ایجاد شده در بالا تعریف نمود:
send Tsend =new send(output);
recv Trecv=new recv(input,output);
Stream های ورودی و خروجی ایجاد شده به عنوان پارامتر به این دو ترد ارسال می شود. حال کافیست دو ترد مورد نظر را اجرا کنیم:
[code]Tsend.start();
Trecv.start();[/code
سلام دوستان
آموزش بالا رو میخوام به صورت چت گرافیکی بنویسم -مثلا از طریق تکس باکس متن رو ارسال و از طریق تکس اریا اونو دریافت و نمایش بدم
برای همین اومدم یک تابع تعریف کردم که با فعال کردن یک رادیو باتن اون تابع فراخونده بشه و اتصال انجام بشه تا اینجا همه چیز درسته و کانکت انجام میشه و برای تست تو همون تابع یک متن از طرف سرور ارسال میکنم که کلاینت میگیره و نمایش میده
اما وقتی که میخوام از طریق دکمه یک متن رو از تکس باکس بخونم و از سرور ارسال کنم متن ارسال میشه اما کلایینت با اتمام کار تابع اول دیگه متنی رو نمیگیره - کانکشن و input وout put هامو هم همشو استاتیکی کردم از روش ترد هم استفاده کردم اما نمیدونم مشکل از کجاست
کسی برنامه بالا رو به صورت گرافیکی درست کرده
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
من نوشتم. میتونی برنامه رو اینجا ببینی. ولی سورسش نیست
https://barnamenevis.org/showthread.p...=1#post1420757
مشکل ممکنه از خیلی جاها باشه. یه علت خاص نداره که فلان جا رو تغییر بدی درست میشه.
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
نقل قول:
نوشته شده توسط
spiderman200700
ممنونم درست شد
مشکل از این بود که باید input و output , رو جای مناسبی new نکرده بودم
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
نقل قول:
نوشته شده توسط
spiderman200700
شرمنده
میخوام یه عکسی رو از کلاینت به سرور و برعکس انتقال بدم اما نمیدونم که عکس رو باید چه طور به بایت تبدیل کنم اگه میشه راهنمایی کنید
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
سلام .
ممنون از اموزش هاتون . توی این برنامه چت اگه بخوایم خود پیغام هارو همراه با اطلاعاتی مثل تاریخ ارسال و دریافت پیام ذخیره داشت باشیم باید چی کار کنیم؟
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
با سلام. توی این تاپیک یه کلاینت به یه سرور وصل میشه. حالا اگه بخام چند کلاینت رو به یه سرور وصل کنم چی؟ یعنی سرور چند نخی نوشته بشه. میشه کمکم کنید. هدف من پیاده سازی چت چند نفره هستش.
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
سلام
داخل این سایت هم یک سری اطلاعات مفید در مورد مالتی تردینگ وجود داره که می تونید ازش استفاده کنید.
http://www.hastiproject.com/?p=213
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
نقل قول:
نوشته شده توسط
mz70_z
گیج بنگ تاریخ تاپیک رو ببین بعد بحرف
-
نقل قول: Thread در جاوا (قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد)
سلام. این برنامه رو نوشتم و اجرا کردم (اول سرور و بعد کلاینت) هرچی داخل کنسول تایپ می کنم اتفاقی نمیفته. میشه راهنمایی کنید