PDA

View Full Version : مسنجر تحت شبکه (UDP)



Hamid_PaK
شنبه 29 تیر 1387, 15:48 عصر
یه مسنجر که با پروتکل UDP کار میکنه(دوستان لطفا نظر بدین).

توزیح تنظیمات:


[Options]
Name=My Name
Port=8760
LocalIpMask=192.168.0.*
; این گزینه برای بدست آوردن آیپی کنونی کامپیوتر شما استفاده خواهد شد
با این تنظیم برنامه تنها وقتی کار میکند که آیپی شما در میان 192.168.0.1 تا 192.168.0.255 باشد ;
از * برای ماسک کردن استفاده کنید
;تنها کافیست که بر روی دکمه ? جلوی این مورد کلیک کرده و آیپی کنونی خود را از فهرست انتخاب کنید
SavePartner=1
ShowMyself=0



نسخه 1.8 منتشر شد.
نسخه 1.9 منتشر شد.
نسخه 2.0 سازه 99 منتشر شد.
نسخه 2.0 سازه 100 منتشر شد.
نسخه 2.1 سازه 9 منتشر شد.

تغییرات 1.9:

تغییر نام Subnet Mask به Local IP Mask
افزودن مراحل اتصال به Broadcast
افزودن شکلکهای جدید
رفع تعدادی اشکال
افزودن امکانات مختصر

-------------
تغییرات 2.0 سازه 99:

افزودن امکان ارتباط صوتی بین کاربران
رفع تعداد بسیاری خطا
تغییرات و امکانات مختصر

-------------
تغییرات 2.0 سازه 100:

امکان انتخاب IP Local از فهرست
تغییر الگوریتم Ping برنامه
رفع تعداد اشکال و خطا

-------------
تغییرات 2.1 سازه 9:

افزودن شکل و شمایل نوشتاری
تغییر الگوریتم Ping برنامه
رفع تعداد اشکال و خطا


یا حق ...

dkhatibi
شنبه 29 تیر 1387, 22:55 عصر
ببرنامه ی مسنجر در مثالهی INdy وجو دره از ائن کمک گرفینن؟

Hamid_PaK
یک شنبه 30 تیر 1387, 09:09 صبح
ساختار کار دقیقا نمونه ای است که در سایت delphi.about.com ارائه شده است.

لینک منبع (http://delphi.about.com/library/weekly/aa101105a.htm)

یا حق ...

dkhatibi
یک شنبه 30 تیر 1387, 12:23 عصر
به طور local نمی شه از اون استفاده کرد؟

Hamid_PaK
یک شنبه 30 تیر 1387, 12:33 عصر
فرقی نمی کنه توی شبکه داخلی هم جواب می ده.

یا حق ...

Hamid_PaK
چهارشنبه 09 مرداد 1387, 22:10 عصر
نسخه 1.8 به پست معرفی افزوده شد.

ویژگیها:

تغییر فهرست دوستان (کدنویسی با فلش)
تغییر و تصحیح نمایش متون Tray
افزودن فهرست شکلکها
رفع چندین اشکال مختصر


لطفا نظر بدهید.

یا حق ...

mms_4004
پنج شنبه 10 مرداد 1387, 12:19 عصر
خوب حالا چه طوری می شه همین مسنجر رو طوری تغییر داد که بشه باهاش از یک مودم دیگه به وسیله ی خط تلفن به مودم دیگه متصل شد و از همین مسنجر استفاده کرد.

Hamid_PaK
پنج شنبه 10 مرداد 1387, 12:33 عصر
نوع پروتوکول این مسنجر ربطی به نوع ارتباطش با مودم نداره، تنها نیاز به شبکه داره، چه داخلی و چه اینترنت.

یا حق ...

HadiDelphi
پنج شنبه 10 مرداد 1387, 13:22 عصر
ببخشید یه سوال بی مورد دارم
در مورد شبکه UDP میشه توضیح بدین ؟

Hamid_PaK
پنج شنبه 10 مرداد 1387, 15:22 عصر
UDP شبکه نیست یه قرارداده مثل TCP.

لینک ویکیپیدیا (http://en.wikipedia.org/wiki/User_Datagram_Protocol)

یا حق ...

aserfg
جمعه 11 مرداد 1387, 10:17 صبح
اين هم يه مسنجر ساده است كه با استفاده از پروتكل tcp كار مي كنه .

Hamid_PaK
جمعه 11 مرداد 1387, 12:34 عصر
یکی از بزرگترین مشکلاتی که من با پروتوکل TCP داشتم این بود که کلاینت برای دریافت اطلاعات از سرور باید در یک دور گردش مقادیر دریافتی را چک میکرد که این باعث تاخیر در برنامه می شد که به وضوح در این مثال دیده می شود.
سوال من درباره با این پروتوکل اینه که یاهو هم از TCP استفاده می کنه ولی چطور این مشکل حل شده ؟

با تشکر، یا حق ...

vcldeveloper
جمعه 11 مرداد 1387, 16:02 عصر
یکی از بزرگترین مشکلاتی که من با پروتوکل TCP داشتم این بود که کلاینت برای دریافت اطلاعات از سرور باید در یک دور گردش مقادیر دریافتی را چک میکرد که این باعث تاخیر در برنامه می شد که به وضوح در این مثال دیده می شود.
من سورس شما را چک نکردم. از چی استفاده کردید، Indy؟ چرا نیاز به حلقه داشتید؟!!

aserfg
جمعه 11 مرداد 1387, 19:47 عصر
اصلا نيازي به حلقه و تكرار نيست چون در سمت كلاينت از يه memo استفاده كردم و مي خواستم كل خطوط ارسال بشه اين كار رو كردم شما تنها با نوشتن كد زير يه string رو مي تونين به سرور ارسال كنيد:

idtcpclient1.writeln(string)و همچنين براي خواندن از متد readln

Hamid_PaK
جمعه 11 مرداد 1387, 23:11 عصر
اصلا بحث ارسال نیست! مشکل برای دریافت اطلاعات است.
برنامه کلاینت را اجرا کنید می بینید که بعد از اتصال برای دریافت اطلاعات از سرور برنامه دچار تاخیر خواهد شد، این به دلیل اینه که کلاینت هر چند ثانیه برای دریافت اطلاعات دستورات Receive رو اجرا می کند.
و نکته دیگه اینکه توی پروتوکل UDP شما یه پیغام رو توی کل شبکه ارسال می کنید ولی من با TCP نتونستم.

یا حق ...

vcldeveloper
جمعه 11 مرداد 1387, 23:20 عصر
برنامه کلاینت را اجرا کنید می بینید که بعد از اتصال برای دریافت اطلاعات از سرور برنامه دچار تاخیر خواهد شد، این به دلیل اینه که کلاینت هر چند ثانیه برای دریافت اطلاعات دستورات Receive رو اجرا می کند.
برنامه شما باید در سمت هر کلاینت یک IdTCPServer و یک IdTCPClient داشته باشه.


نکته دیگه اینکه توی پروتوکل UDP شما یه پیغام رو توی کل شبکه ارسال می کنید ولی من با TCP نتونستم.
بله، ولی خیلی از روترها این پیغام های Broadcast شده رو فیلتر می کنند.

Hamid_PaK
شنبه 12 مرداد 1387, 18:54 عصر
مسلم که باید هم سرور باشه و هم کلاینت، در UDP هم همینطور است.
پس برای یافتن کلاینتها در یک شبکه با TCP از چه راهی باید استفاده کرد ؟
و اینکه چرا اکثر آنتی ویروسها بسته های UDP رو مسدود می کنند؟

با تشکر، یا حق ...

vcldeveloper
شنبه 12 مرداد 1387, 20:15 عصر
پس برای یافتن کلاینتها در یک شبکه با TCP از چه راهی باید استفاده کرد ؟
کلاینت برای استفاده از سرویس های ارائه شده توسط سرور باید به سرور لاگین کنه، نه اینکه سرور خودس دنبال کلاینت ها بگرده.


چرا اکثر آنتی ویروسها بسته های UDP رو مسدود می کنند؟
من اطلاعی ندارم، اینو باید در بخش شبکه بپرسید.

Hamid_PaK
یک شنبه 13 مرداد 1387, 05:34 صبح
حاج علی مشکل همین هست، توی UDP یه پیغام سراسری که ارسال می شه همه سرورها اونو دریافت می کنند پس تشخیص می دند که کلاینتی وجود داره و پاسخ از طریق کلاینت خودش ارسال میشه ولی برای TCP چطور وقتی نمیشه پیام سراسری ارسال کرد کلاینتی رو جستجو کنیم.

یا حق ...

vcldeveloper
یک شنبه 13 مرداد 1387, 06:42 صبح
کلاینت رو که جستجو نمی کنند. باید یک سرور مرکزی باشه که همه کلاینت ها آدرسش رو داشته باشند. وقتی کلاینتی می خواد به سیستم متصل بشه، به این سرور مرکزی لاگین میکنه. سرور هم مشخصات این کلاینت را ثبت میکنه، و به سایر کلاینت ها که در سرور لاگین کردند و مشخصاتشان در سرور ثبت شده، پیامی ارسال میکنه که فلان کلاینت لاگین کرده؛ یا لیست دوستان هر یک از کلاینت هایی که لاگین کردن را بررسی میکنه، اگر نام کلاینت جدید در آن بود، پیامی برای آن ارسال میکنه که فلانی لاگین کرده. زمانی که کلاینتی Log-off میکنه، اسمش از لیست کلاینت های موجود در سرور مرکزی حذف میشه. البته سرور باید حضور هر یک از کلاینت ها را ر فواصل زمانی معینی بررسی کنه، مثلا اگر کلاینتی ظرف 1 دقیقه داده ایی با سرور رد و بدل نکرد، سرور یک پیام برای آن بفرسته تا ببینه آیا کلاینت جواب میده یا نه، اگر نداد، یعنی کلاینت به شکل غیر منتظره ایی ارتباطش را از دست داده (مثلا برقش قطع شده) و باید اسمش از لیست کلاینت های موجود حذف بشه.

Hamid_PaK
یک شنبه 13 مرداد 1387, 09:38 صبح
تصور میکردم که سیستم یه چیزی شبیه این باشه یاهو هم از همین روش استفاده می کنه ولی مشکل ما اینه که ما توی یه شبکه ساده امکان برقرار کردن یه سرور رو نداریم که همچین چیزی رو بنویسیم!
آیا به نظر شما برای شبکه های کوچک همین روش UDP کارایی بالاتر داره ؟

یا حق ...

aserfg
یک شنبه 13 مرداد 1387, 13:57 عصر
اين پروتوكل (tcp) معمولا در شبكه هاي بزرگ استفاده مي شه شايد مستلزم دقت و حساسيت بيشتري باشه ولي به دلايلي از قبيل توانايي بازبيني بسته هاوكنترل خطا قابل اعتمادتر و قوي تر از پروتوكل udp است ضمنا در خيلي موارد udp وابسته به tcp است.

vcldeveloper
یک شنبه 13 مرداد 1387, 19:19 عصر
توی یه شبکه ساده امکان برقرار کردن یه سرور رو نداریم که همچین چیزی رو بنویسیم!
سرورش چیزی خاصی نمی خواد. یک کامپیوتر معمولی هم کفایت میکنه، غیر از اینکه بگید ممکنه کامپیوتری که نقش سرور رو بازی میکنه، همیشه در دسترس نباشه. در اون صورت برنامه چت شما بدون یک سرور مرکزی، تبدیل میشه به یک نرم افزار Peer-to-Peer. در این حالت، دیگه لاگین کردن معنی نداره. میشه چند کار کرد:
1- هر فرد لیست آدرس های IP کاربرانی که در لیست دوستانش هستند را داشته باشه، و برنامه مرتبا اون آدرس ها را چک کنه تا ببینه آیا کاربر مربوطه آن لاین هست یا نه.
2- از همین UDP برای بررسی اینکه چه کاربرانی آن لاین هستند استفاده بشه؛ یعنی یک پیام Broadcast بشه، هر کی بهش جواب داد، آدرس IPاش در برنامه ثبت بشه.

اینها همه بستگی به وظیفه ایی که برعهده برنامه هست، داره.

Hamid_PaK
یک شنبه 13 مرداد 1387, 21:38 عصر
من این برنامه رو به تعدادی از دوستانم دادم ولی اکثر اونها با مشکل مواجه شدند و دلیل آن هم مسدود شدن بسته های Broadcast بوده.
خواهش می کنم که دوستانی که این برنامه رو استفاده می کنند در همین تاپیک نتیجه را بنویسند که در کدامیک از بخشهای اتصال درچار مشکل شدند و یا برنامه کار می کند.
فقط دوستان دقت کنند که هنگامی که برنامه برای اولین بار اجرا می شود بعد از تنظیمات دسترسی مربوط به Firewall و یا برنامه های از این دست بدون بستن آن تنها از منوی Messenger گزینه Connect رو بزنند.

با تشکر فراوان، یا حق ...

Hamid_PaK
دوشنبه 28 مرداد 1387, 18:15 عصر
نسخه 2.0 به پست معرفی افزوده شد.
منتظر نظراتتون هستم.
حاج علی حتما چک کن، منتظرم.

با تشکر، یا حق ...

Hamid_PaK
چهارشنبه 30 مرداد 1387, 21:48 عصر
نسخه 2.0 سازه 100 به پست معرفی (ابتدایی) افزودن شده.
دوستان بعد از حدود 60 بار دانلود حداقل میگفتید که آیا برنامه درست کار می کنه یا خیر !!!

با تشکر، یا حق ...

Hamid_PaK
چهارشنبه 06 شهریور 1387, 22:25 عصر
نسخه 2.1 سازه 9 به پست معرفی افزوده شد.
دوستان خواهشمندم در صورت مواجه شدن با هرگونه اشکال و یا خطایی، مورد را به بنده اطلاع دهند.

با تشکر، یا حق ...

plascokar
چهارشنبه 26 فروردین 1388, 07:03 صبح
باتشکر از شما.
بله برنامه به درستی کار میکنه.