اتصال به یک برنامه چت روی LAN
سلام دوستان
یه برنامه چت توی سایت زیر هست که با وی بی دات نت نوشته شده
http://www.codeproject.com/KB/IP/TCP...t_Program.aspx
این برنامه امکان چت بین کامپیوترهای یک شبکه رو میده
ولی شما باید آدرس کامپیوتری رو که میخواهید باهاش چت کنید توی برنامه وارد کنید و دکمه کانکت رو بزنید و پیامتون رو بفرستید
من این برنامه رو با کلی بدبختی و ارور گیری به سی شارپ تبدیل کردم
توی مبحث مولتی تردینگ بیچاره شدم تا تونستم درستش کنم که البته اینها همه از بیسوادی من بوده و به شما بیگناهان هیچ ربطی نداره
حالا چیزی که من بهش اضافه کردم یه مقدار جلوه های بصری است و اینکه مشخصات همه کامپیوترهای شبکه رو لیست میکنه و شما با انتخاب یک کامپیوتر میتونید با اون چت کنید
وقتی شما کامپیوتری رو انتخاب میکنید برنامه توسط یه سری کامپوننت وجود اون کامپیوتر بررسی رو در شبکه lan چک میکنه میکنه واگر اون کامپیوتر در شبکه فعال باشه اونوقت شما امکان تایپ پیام و ارسال رو دارید
حالا این همه حرف زدم تا بگم میخوام این تحفه رو براتون بزارم توی سایت ولی قبلش یه سوال دارم تا اگر به جوابش برسم اونو تکمیل تر کنم و بعدش بزارمش اینجا
سوالم اینه:من وجود کامپیوتر انتخاب شده از لیست رو میونم با پینگ و .... توی شبکه چک کنم ولی چطوری باید فهمید که اونم همین برنامه چت رو روی سیستمش نصب کرده و الان هم برنامه در حال اجراست(بدون نصب این برنامه در کامپیوتر مقصد،امکان چت با اون وجود نداره حتی اگر برنامه نصب باشه ولی در حال اجرا نباشه امکان چت وجود نداره)
اگر غیر از این حالت باشد وجود کامپیوتر چک میشه و پینگ هم درست جواب میده ولی موقع ارسال پیام سیستم ارور میده و میگه اون کامیوتر نمیتونه با شما چت کنه
برنامه با tcplistener و tcpclient نوشته شده و فاقد سرور میباشد(یکی از نقاط قوت برنامه)
منتظر راهنمایی های شما هستم
اگر جواب ندادید یا من سوادم نکشید اونوقت بفرمائید تا همینطوری بزارمش اینجا
نقل قول: یه برنامه عالی برای چت در شبکه lan
به نظر من :
کلاینت باید مدام به خط گوش کنه (یعنی مانند سرور باشه) بعد اگر از طرف سرور(که باید مثل کلاینت کانکت بشه) در خواست کانکت اومد باید آن رو قبول کنه و بلافاصله یک پیغام خاص رو بفرسته به سرور بعد ارتباط قطع بشه و کلاینت نقش کلاینت پیدا کنه و سرور هم نقش سرور.
امیدوارم که تونسته باشم منظورم رو رسانده یاشم.
نقل قول: یه برنامه عالی برای چت در شبکه lan
نقل قول:
نوشته شده توسط
kia1349
سلام دوستان
یه برنامه چت توی سایت زیر هست که با وی بی دات نت نوشته شده
http://www.codeproject.com/KB/IP/TCP...t_Program.aspx
این برنامه امکان چت بین کامپیوترهای یک شبکه رو میده
ولی شما باید آدرس کامپیوتری رو که میخواهید باهاش چت کنید توی برنامه وارد کنید و دکمه کانکت رو بزنید و پیامتون رو بفرستید
من این برنامه رو با کلی بدبختی و ارور گیری به سی شارپ تبدیل کردم
توی مبحث مولتی تردینگ بیچاره شدم تا تونستم درستش کنم که البته اینها همه از بیسوادی من بوده و به شما بیگناهان هیچ ربطی نداره
حالا چیزی که من بهش اضافه کردم یه مقدار جلوه های بصری است و اینکه
مشخصات همه کامپیوترهای شبکه رو لیست میکنه و شما با انتخاب یک کامپیوتر میتونید با اون چت کنید
وقتی شما کامپیوتری رو انتخاب میکنید برنامه توسط یه سری کامپوننت وجود اون کامپیوتر بررسی رو در شبکه lan چک میکنه میکنه واگر اون کامپیوتر در شبکه فعال باشه اونوقت شما امکان تایپ پیام و ارسال رو دارید
حالا این همه حرف زدم تا بگم میخوام این تحفه رو براتون بزارم توی سایت ولی قبلش یه سوال دارم تا اگر به جوابش برسم اونو تکمیل تر کنم و بعدش بزارمش اینجا
سوالم اینه:من وجود کامپیوتر انتخاب شده از لیست رو میونم با پینگ و .... توی شبکه چک کنم ولی چطوری باید فهمید که اونم همین برنامه چت رو روی سیستمش نصب کرده و الان هم برنامه در حال اجراست(بدون نصب این برنامه در کامپیوتر مقصد،امکان چت با اون وجود نداره حتی اگر برنامه نصب باشه ولی در حال اجرا نباشه امکان چت وجود نداره)
اگر غیر از این حالت باشد وجود کامپیوتر چک میشه و پینگ هم درست جواب میده ولی موقع ارسال پیام سیستم ارور میده و میگه اون کامیوتر نمیتونه با شما چت کنه
برنامه با tcplistener و tcpclient نوشته شده و فاقد سرور میباشد(یکی از نقاط قوت برنامه)
منتظر راهنمایی های شما هستم
اگر جواب ندادید یا من سوادم نکشید اونوقت بفرمائید تا همینطوری بزارمش اینجا
چطوری مشخصات همه کامپیوترها رو لیست میکنه.
آخه من هنوز یک کد ناب برای این کار ندیدم.
حتی برنامه هایی مانند netsupporrt هم بطور 100 درصد نمیتونند این کار رو بکنند.
:متفکر::متفکر::متفکر::متفکر:
نقل قول: یه برنامه عالی برای چت در شبکه lan
من اصلا در اين زمينه تخصص ندارم و اصلا نرم افزاري مثل اينو تا حالا برخورد نكردم تا بنويسم
ولي خب شبكه و ... بلدم
به نظر من براي اينكه بدونيم ايا نرم افزار در كلايت اجرا شده يا نه ؟ اول بايد بدونيم ما از طريق سرور (توسط برنامه نويسي) به چيزهايي از كلاينت مي تونيم دسترسي داشته باشيم
من فكر مي كنم مي تونيم به يك فايل share شده دسترسي داشته باشيم .
خب شما وقتي نرم افزار را اجرا مي كني يه كدي بنويس كه يك فايل با مشخصات pc مربوطه را share كنه و بعد برنامه اي كه رو سرور هست اون فايل را چك كنه اگر فايل به همراه مشخصات بود يعني برنامه اجرا شده
اگر نبود يعني برنامه اجرا نشده (موقع بستن برنامه هم اون فايل را delete كنيد و موقع اجرا ايجاد كنيد)
در واقع در اين روش شما دارين از يك Flag استفاده مي كنيد. (از لحاظ امنيتي كمي پايين هست ولي ميشه يه كارايي روش انجام داد)
راستي شما گفتين كه وقتي برنامه در حال اجرا نباشه يا كامپيوتر كلاينت خاموش باشه وقتي از سرور پيغامي ارسال كنيم خطا ميده
خب شما اون خطا را با try و catch بگير و يه مسيج بده كه برنامه اجرا نشده يا كامپيوتر شناخته نشده
در كل اين فقط به ذهنم رسيد و در حد يك ايده است شايد اصلا درست نباشه
اميدوارم كه مشكل حل بشه
راستي با UP كردن سورستون هم موافقم
نقل قول: یه برنامه عالی برای چت در شبکه lan
نقل قول:
سوالم اینه:من وجود کامپیوتر انتخاب شده از لیست رو میونم با پینگ و .... توی شبکه چک کنم ولی چطوری باید فهمید که اونم همین برنامه چت رو روی سیستمش نصب کرده و الان هم برنامه در حال اجراست(بدون نصب این برنامه در کامپیوتر مقصد،امکان چت با اون وجود نداره حتی اگر برنامه نصب باشه ولی در حال اجرا نباشه امکان چت وجود نداره)
مخلص آقا کیا گل هستیم...
برنامه شما روی یک کلاینت که نصب میشه، روی یک پورت خاص Listen میکنه. سایر کلاینت ها برای اینکه بتونند با اون کلاینت ارتباط چت داشته باشند، باید به اون کلاینت از طریق همان پورت متصل بشند. حالا اگر برنامه ایی پیامی به آن کلاینت روی آن پورت بخصوص ارسال کنه، و عملش موفق نباشه، یعنی اون پورت بسته هست، یعنی هیچ برنامه ایی روی اون پورت در حال Listen کردن نیست. اگر به اون پورت روی کلاینت وصل شدید، می تونید یک پیام هم بهش ارسال کنید، و مثلا ازش بخواید که یک رشته خاص را به شما برگردانه. اگر پاسخش درست بود، یعنی برنامه شما داره Listen میکنه، اگر پاسخ نداد، یا پاسخش اشتباه بود، یعنی برنامه دیگه ایی داره روی اون کلاینت از این پورت استفاده میکنه.
البته این به شرطی هست که پورتی که روی کلاینت ها Listen میشه ثابت باشه، نه یک پورت تصادفی.
3 ضمیمه
نقل قول: اتصال به یک برنامه چت روی LAN
open-source عزیز ممنون از جوابت
اون کد لیست کردن کامپیوترهای شبکه رو فکر کنم از codeproject گرفتم
debugger جان روش سما رو هم امتحان میکنم .سورس رو up میکنم تا ببینید
حاج علی گل گلاب خیلی خیلی ارادت داریم.علی جان باید امتحان کنم.پورتها هم ثابته.یه پورت برای چت یه پورت هم برای ارسال فایل.چون این برنامه قابلیت ارسال فایل هم داره.ولی خوب بهینه سازی میخواد.مثلا لیست شدن کامپیوترهای شبکه باید در فواصل زمانی مناسب رفرش بشه و ارسال فایل بعد از تائید طرف مقابل اتفاق بیافته
از دوستان میخوام کمک کنند تا پیاده سازی بشه و بتونیم این برنامه رو کامل کنیم و برای استفاده در اختیار سایر دوستان قرار بدیم
نقل قول: اتصال به یک برنامه چت روی LAN
باسلام
ممنون از كدي كه قرار داديد اما من از سايت code project نميتوانم دانلود كنم چون عضويت مي خواهد اما نمي دونم چه طوري
نقل قول: اتصال به یک برنامه چت روی LAN
والا ثبت نامش که راحته من قبلا ثبت نام کرده ام نمیدونم الان فرق کرده یا نه
ولی اگر چیزی میخواهید بگید تا براتون دانلود کنم
نقل قول: اتصال به یک برنامه چت روی LAN
یه سوال:
من وجود کامپیوترهای شبکه رو با پینگ کردن چک میکنم
حالا چون باید چت روی پورت 65535 انجام بشه کسی میدونه که آیا میشه پینگ رو به صورت
ping xxx.xxx.xxx.xxx:65535 زد و اگر جواب مثبت بود یعنی الان برنامه چت روی کامپیوتر مقصد run شده و داره روی پورت 65535 به درخواستها گوش میده و اگر برنامه ران نباشه جواب پینگ هم درست بر نگرده و ما متوجه بشیم که برنامه روی ip مقصد ران نیست و اینطوری بفهمیم چه کامپیوترهایی در شبکه وجود دارد و کدومشون هم در حال حاضر برنامه چت رو اجرا کرده اند
نقل قول: اتصال به یک برنامه چت روی LAN
نقل قول:
نوشته شده توسط
kia1349
والا ثبت نامش که راحته من قبلا ثبت نام کرده ام نمیدونم الان فرق کرده یا نه
ولی اگر چیزی میخواهید بگید تا براتون دانلود کنم
کلا می خواهم ثبت نام کنم
نقل قول: اتصال به یک برنامه چت روی LAN
سلام
به نظر من برنامه دو بخش باشد . یک بخش یک Windows Service است که روی پورت مورد نظر عمل میکند و تضمین اجرای آن با سیستم عامل است و بخش دیگر که منوهای برنامه است و عمل چت را از طریق این سرویس انجام میدهد(در واقع همیشه پورت x را اشغال و رزرو شده نگه میدارد) میتوان از Dotnet Remoting هم استفاده کرد
نقل قول: اتصال به یک برنامه چت روی LAN
اگه می شه محبت کنین و منو در نوشتن این برنامه راهنمایی کنین:(به زبان سی شارپ یا وی بی)
یک سرور و چندین کلاینت در حال اجرا باشند
یک سرور روی شبکه اجرا میشود.
آدرس ارتباط با سرور (آی پی و پورت ارتباطی) در تمامی کلاینت ها ثبت میگردد.
کلاینت ها اقدام به برقراری ارتباط با سرور میکنند.
اگر کلاینتی به دلیل مشغول بودن سرور موفق به برقراری ارتباط نشد به مدت زمان تصادفی منتظر مانده و مجددا برای برقراری ارتباط اقدام میکند.
هر کلاینتی که موفق به برقراری ارتباط با سرور شد درخواست خود را اعلام میکند
سرور به کلاینت فهرستی از اعداد را برای پردازش اعلام میکند.
کلاینت بلا فاصله پس از دریافت فهرست و اعلام صحت دریافت اطلاعات از سرور جداشده و شروع به پردازش میکند.
پس از اتمام پردازش کلاینت مجددا به سرور متصل شده و پس از اعلام گزارش از اعداد اولی که پیدا کرده است درخواست دریافت فهرست پردازشی جدید را ارسال کرده و این مسیر ادامه میابد
هر کلاینت در لحظه ی ارسال پیام به سرور متصل گردیده، پیام را ارسال و پاسخ را دریافت میکند و بلافاصله از سرور جدا میشود تا ارتباط برای سایر کلاینت ها آزاد شود. به عنوان مثال یک کلاینت به سرور متصل شده و پیام "کلاینت شماره *** آماده" (به جای *** شماره یا نام کلاینت که توسط یک جعبه متن در برنامه تعیین میشود قرار میگیرد) را ارسال میکند. سرور هم در پاسخ پیام "کلاینت *** دریافت شد" را ارسال میکند. و کلاینت پس از دریافت این پیام از سرور جدا میشود.
خواهشاً اگه کسی می دونه منو راهنمایی کنه
نقل قول: اتصال به یک برنامه چت روی LAN
نقل قول:
نوشته شده توسط
fchmmm
اگه می شه محبت کنین و منو در نوشتن این برنامه راهنمایی کنین:(به زبان سی شارپ یا وی بی)
یک سرور و چندین کلاینت در حال اجرا باشند
یک سرور روی شبکه اجرا میشود.
آدرس ارتباط با سرور (آی پی و پورت ارتباطی) در تمامی کلاینت ها ثبت میگردد.
کلاینت ها اقدام به برقراری ارتباط با سرور میکنند.
اگر کلاینتی به دلیل مشغول بودن سرور موفق به برقراری ارتباط نشد به مدت زمان تصادفی منتظر مانده و مجددا برای برقراری ارتباط اقدام میکند.
هر کلاینتی که موفق به برقراری ارتباط با سرور شد درخواست خود را اعلام میکند
سرور به کلاینت فهرستی از اعداد را برای پردازش اعلام میکند.
کلاینت بلا فاصله پس از دریافت فهرست و اعلام صحت دریافت اطلاعات از سرور جداشده و شروع به پردازش میکند.
پس از اتمام پردازش کلاینت مجددا به سرور متصل شده و پس از اعلام گزارش از اعداد اولی که پیدا کرده است درخواست دریافت فهرست پردازشی جدید را ارسال کرده و این مسیر ادامه میابد
هر کلاینت در لحظه ی ارسال پیام به سرور متصل گردیده، پیام را ارسال و پاسخ را دریافت میکند و بلافاصله از سرور جدا میشود تا ارتباط برای سایر کلاینت ها آزاد شود. به عنوان مثال یک کلاینت به سرور متصل شده و پیام "کلاینت شماره *** آماده" (به جای *** شماره یا نام کلاینت که توسط یک جعبه متن در برنامه تعیین میشود قرار میگیرد) را ارسال میکند. سرور هم در پاسخ پیام "کلاینت *** دریافت شد" را ارسال میکند. و کلاینت پس از دریافت این پیام از سرور جدا میشود.
خواهشاً اگه کسی می دونه منو راهنمایی کنه
قبلا" نوشته شده.اسمش هست TCP
نقل قول: اتصال به یک برنامه چت روی LAN
نقل قول:
نوشته شده توسط
FastCode
قبلا" نوشته شده.اسمش هست TCP
یعنی چه قبلاً نوشته شده اسمش هست TCP
نقل قول: اتصال به یک برنامه چت روی LAN
نقل قول:
نوشته شده توسط
fchmmm
یعنی چه قبلاً نوشته شده اسمش هست TCP
یعنی این برنامه قبلا نوشته شده سرچ کن اسمش tcp
نقل قول: اتصال به یک برنامه چت روی LAN
سلام.
من زیاد از برنامه نویسی و شبکه اطلاعاتی ندارم:اشتباه:.اما به نظرم تو باید بتونی یک ip scaner بنویسی بعد یه رنج ip بهش بدی که بتونه بر اساس اون پورت خاص مثلا 1234 آیپی ها رو چک کنه.اگه بتونی این کارو بکنی و یک ایپی اسکنر بسازی، روم هم می تونی بسازی:لبخند:.من خودم با ویژوال بیسیک اینکارو کردمو جواب هم گرفتم.:چشمک:
نقل قول: اتصال به یک برنامه چت روی LAN
با سلام
من يه برنامه نويس ويژوال بيسك هستم كه دارم به سي شارپ ميام براي ياد گيري هم به كار گروهي نياز دارم مثل اين
نظر من اين است (تحليل برنامه مشابه مثل ياهو مسنجر)
1- يك سرور مركزي وجود دارد كه تمام كلاينتها آي پي و پورت آن را براي لاگ اين مي دانند و براي ورود به سرور مركزي لاگين مي كنند چه با رمز و چه بي رمز
2- چون ليست اي پي تمام كامپيوترهاي فعال و داراي برنامه در سرور هست نيازي به اسكن شبكه نيست و اصلا توصيه نمي شود
3- در ارتباط عمومي پيغامها به سرور و از سرور به كلا كلاينتهاي روم فرستاده ميشود
4- در ارتباط Peer و خصوصي اي پي از سرور درخواست و كلاينتها مستقيم به هم متصل مي شوند براي درخواست فايل و يا چت خصوصي بدون لايه ايزوله
5- براي ارسال پيغامها از پروتكل UDP استفاده ميشود و در بقيه از TCP
6- درصورت استفاده از TCP براي ارسال پيغام كلاينت بعدي نمي تواند متصل شود ( اينجا يه كرش رو داشته باشيد)
به نظر من اين اصول كلي طراحي اين برنامه است البته با افزايش امكانات ميتواند طراحي آن هم گسترش يابد ويا براي كار حرفه اي بايد ساختار ايزوله براي مسايل امنيتي رعايت شود
دوستان لطف كنند كدهاش رو براي ما تازه واردها بنويسند تا از روش شبي سه بار مشق بنويسيم و ياد بگيريم :)
من كه تو طراحي برنامه اي براي ايجاد انكدينگ يو ار ال براي كار خاص نتونستم كد اسكي كاراكتر رو بگيرم و به تكست اضافه كنم :(
لطفا نخنديد
نقل قول: اتصال به یک برنامه چت روی LAN
سلا
جناب kia1349 عزیز من خودم قبلا این برنامرو نوشتم و از روشی که در روتر ها هم استفاده میشه استفاده کردم
اون روش اینه که شما میتونید تو برنامتون این رو بگنجونید که هر بار برنامه اجرا میشه و از اتصالش به شبکه مطمئن میشه
یک پیام بصورت broadcast روی شبکه ارسال میکنه و به سایر برنامه هایی که در حال اجرا هستند اطلاع میده که به وارد شبکه شده
و کلاینت هایی هم که این پیام رو دریافت میکنن بهش پاسخ میدن که کلاینت تازه واردمون هم بدونه چه سیستم هایی در حال حاضر در شبکه هستن
و موقع بستن برنامه هم برعکس اینکار رو انجام بدین یعنی پیغام قطع ارتباط رو broadcast کنین که مسلما نیاز به جواب نیست
برای اینکار شما میبایست کلا یه thread جداگونه در نظر بگیرین که در تمام مدتی که برنامه در حال اجرا هست لیسن کنه که پیغامهای جدید رو دریافت کنه.
نقل قول: اتصال به یک برنامه چت روی LAN
سلام
پروژه ی دانشگاهی من ساختن نرم افزار چت به صورتی که 2 کلاینت بتونن با هم چت کنن و برای هم فایل ارسال کنن و من ابتدا هیچ اطلاعاتی در این مورد نداشتم بعد از یک سری سرچ در اینترنت فهمیدم که باید برنامه نویسی socket programming رو یاد بگیرم و یه نرم افزار چت بین کلاینت و سرور رو گرفتم و روش کار کردم البته چون من برنامه نویسی نکردمو فقط یه مقدار C# بلدم خواستم اگه لطف کنین راهنماییم کنین چون واقعا به راهنماییتون احتیاج دارم و تنها نمیتونم کاری کنم.
پروژم به زبان C# باید باشه و اگه لطف کنین میتونم نمونه پروژ ه ای رو که دارم روش کار میکنمو براتون بفرستم.
بازم ممنون میشم اگه لطف کنین و کمکم کنین.
نقل قول: اتصال به یک برنامه چت روی LAN
سلام خسته نباشيد لطفا اگر مي شود دانلود برنامه را براي من بفرستيد من در صدا و سيما هستم كه همه سايت ها را فيلتر مي كند hamid59022@yahoo.com
نقل قول: اتصال به یک برنامه چت روی LAN
من دانلود کردم عالی بود مخصوصا قسمت تشخیص سیستمهای روی شبکه
نقل قول: اتصال به یک برنامه چت روی LAN
سلام .
می گم من هر قسمتشو که باز می کنم مشابه قسمت قبلیه که . تفاوتشون چیه؟ همشونم اجرا می شن و خروجیشون یکیه
بعد میشه در مورد برنامتون کلا توضیح بدین؟
من تازه کارم و درکش نمی کنم . تا جایی که خوندم برای چت باید یه برنامه سمت سرور داشته باشیم و یه برنامه برای کلاینت . این برنامه شما کلاینت و سرورش کجاست؟ و در کل چطوری میشه اجراش کرد؟همین برنامه رو دو کلاینت روی سیستمشون داشته باشن می تونن ارتباط برقرار کنن آیا؟
ممنون میشم راهنمایی کنید