PDA

View Full Version : راهنمایی در مورد برنامه ای چند کاربره و چت بین آن ها



ghasemshami
سه شنبه 24 شهریور 1388, 14:46 عصر
سلام خدمت دوستان

بنده برنامه ای دارم می نویسم که بین چند نمایندگی یک شرکت است که همه این نمایندگی ها به اینترنت هم وصل هستند

من یک نرم افزار حسابداری براشون نوشتم که الان دارند باهاش کار می کنند و به خوبی عمل کرده ولی یک قسمت که به تازگی باید به این نرم افزار اضافه بشود محیط چت و گفتگوی آنلاین آن است

می خواستم ببینم چطوری این کار رو بکنم بهتر است

از طریق Client IP Address آن ها می شه همچین محیطی رو ایجاد کرد

یا یه دونه بانک روی سایتشون (وب) بزاریم که روی اون ارسال پیام کنند

چه راهی بهتره یا شما پیشنهاد می کنید

البته این رو هم متذکر بشوم که تعداد نمایندگی این شرکت در کل ایران است و در حدود 200 الی 300 تا نمایندگی هستند که ممکن است بیشتر هم بشوند که همیشه آنلاین هستند و باید از این قسمت استفاده کنند.

و چیز دیگه که من با بانک Access کار کردم اما تحت ویندوز و بانک Sql و تحت وب هم تا حالا کار نکردم و با دلفی 7 هم کار می کنم

لطف کنید و من رو راهنمایی کنید در این زمینه خواهشا

vcldeveloper
سه شنبه 24 شهریور 1388, 19:02 عصر
بستگی به امکاناتی که نیاز دارند، امنیت چت، و حجم تبادلات انجام شده داره.

یک راه حل مناسب این هست که یک سرور چت داشته باشید که حاوی یک بانک اطلاعاتی از کاربران باشه. هر کاربر باید بتونه به این سرور لاگین کنه، لیست کاربران آن لاین را دریافت کنه، هر زمان که خواست به یکی از کاربران پیام بفرسته، پیام را به سرور چت بفرسته، و سرور چت پیام را به کاربر مربوطه رله کنه. اگر شرکت می خواد تمام چت های کاربران را جایی log کنه، باید تمام چت ها از مسیر این سرور چت انجام بشند. اما اگر نیازی به این این کار نیست، سرور چت میتونه برای افزایش سرعت چت و کاهش بار سرور، بعد از اولین پیام، IP Address کاربران را به نرم افزار کلاینت ارسال کنه، تا سایر پیام ها مستقیم و بدون وساطت سرور ارسال و دریافت بشند.

ghasemshami
چهارشنبه 25 شهریور 1388, 07:31 صبح
ممنون آقای کشاورز از راهنمایی تون

مدیریت می خواد log تمام چت ها رو داشته باشه که از انتقال پیام هاشون اطلاع داشته باشه

من باید از کجا شروع کنم

چطوری با چه وسیله و امکاناتی نرم افزاری این رو درست کنم

چقدر وقت میبره که بخوام درستش کنم

نمونه برنامه ای برای این موضوع وجود دارد یا کدی یا مرجعی

اگه میشه کمک کنید خواهشا

و این رو بگم که من با دلفی 7 کار می کنم و بانک Access چیز دیگه ای زیاد نمی دونم از ابزارهای دیگه دلفی باید برای این موضوع چه کار کرد

vcldeveloper
چهارشنبه 25 شهریور 1388, 15:50 عصر
برای این کار در دلفی می تونید از کامپوننت های Indy استفاده کنید. نمونه برنامه چت با استفاده از Indy در اینترنت هست. در همین سایت هم نمونه سورس کد برای برنامه چت با استفاده از Indy هست. البته این برنامه ها چت peer-to-peer هستند. برنامه چت شما با استفاده از چت سرور خواهد بود.

برای نوشتن همچین برنامه ایی، بخصوص سمت سرور آن، باید علاوه بر دانش اولیه شبکه، با مفاهیم Multi-threading هم آشنا باشید. نکته بعدی هم پروتکلی هست که برای ارتباط بین سرور و کلاینت ها خودتون می سازید؛ یعنی قراردادی که مثلا هر وقت فلان دستور از طریق شبکه رسید، سرور این کار را انجام دهند، یا اگر فلان دستور به سرور رسید، سرور لیست کاربران آن لاین را با فلان فرمت خاص به کلاینت بفرستد.
برای اینجور کارها هم می تونید خودتون پروتکل اختصاصی بسازید، هم از پروتکل های استاندارد موجود استفاده کنید. استفاده از پروتکل های استاندارد موجود این خوبی را داره که سرور شما با هر کلاینتی که از اون پروتکل پشتیبانی کنه سازگار خواهد بود، حتی اگر اون کلاینت را شما ننوشته باشید. از طرف دیگه، پیاده سازی پروتکل های استاندارد ممکن هست پیچیده تر، و سنگین تر از پروتکلی باشه که شما خودتون برای خودتون درست می کنید.

ghasemshami
چهارشنبه 25 شهریور 1388, 20:29 عصر
برای این کار در دلفی می تونید از کامپوننت های Indy استفاده کنید. نمونه برنامه چت با استفاده از Indy در اینترنت هست. در همین سایت هم نمونه سورس کد برای برنامه چت با استفاده از Indy هست. البته این برنامه ها چت peer-to-peer هستند. برنامه چت شما با استفاده از چت سرور خواهد بود.

برای نوشتن همچین برنامه ایی، بخصوص سمت سرور آن، باید علاوه بر دانش اولیه شبکه، با مفاهیم Multi-threading هم آشنا باشید. نکته بعدی هم پروتکلی هست که برای ارتباط بین سرور و کلاینت ها خودتون می سازید؛ یعنی قراردادی که مثلا هر وقت فلان دستور از طریق شبکه رسید، سرور این کار را انجام دهند، یا اگر فلان دستور به سرور رسید، سرور لیست کاربران آن لاین را با فلان فرمت خاص به کلاینت بفرستد.
برای اینجور کارها هم می تونید خودتون پروتکل اختصاصی بسازید، هم از پروتکل های استاندارد موجود استفاده کنید. استفاده از پروتکل های استاندارد موجود این خوبی را داره که سرور شما با هر کلاینتی که از اون پروتکل پشتیبانی کنه سازگار خواهد بود، حتی اگر اون کلاینت را شما ننوشته باشید. از طرف دیگه، پیاده سازی پروتکل های استاندارد ممکن هست پیچیده تر، و سنگین تر از پروتکلی باشه که شما خودتون برای خودتون درست می کنید.

اگه بخواهیم که مدیریت نظارت نداشته باشه باید از Peer - To - Peer استفاده کنیم

اون موقع این ارتباط بر اساس چه چیزی هست کدام شماره Ip بر اساس چی کار می کنه

این طور که شما گفتید استفاده از peer to peer خیلی ساده از چت سرور هستش

من باهاشون صحبت کردم قرار شده که بر این اساس کار کنم (peer to peer)

اگه میشه یه اطلاعاتی کامل از نحوه کارکرد در این نوع شبکه و نحوه پیاده سازی و خیلی چیزهای دیگه بفرمائید که من چیز زیادی نمی دونم در این باره بتونم این برنامه رو بنویسم

به خدا کارم گیر کرده فقط به این مسئله

vcldeveloper
پنج شنبه 26 شهریور 1388, 09:12 صبح
اون موقع این ارتباط بر اساس چه چیزی هست کدام شماره Ip بر اساس چی کار می کنه

این طور که شما گفتید استفاده از peer to peer خیلی ساده از چت سرور هستش

کلاینت به سرور چت لاگین میکنه و لیست کاربران آن لاین را دریافت میکنه.
اولین باری که کاربر می خواد به کسی پیام بفرسته، آدرس IP از کاربر گیرنده نداره، پس پیام را به سرور می فرسته، سرور هم پیام را به همراه IP فرستنده به گیرنده میفرسته.
اگر گیرنده خواست جواب بده، جوابش را به همراه IP خودش به آدرس IP فرستنده ارسال میکنه
از اینجا به بعد، هم فرستنده و هم گیرنده آدرس IP همدیگه رو دارند، و می تونند بدون وساطت سرور با هم چت کنند.
البته هر دوی اینها باید در فواصل زمانی معین برای آپدیت لیست کاربران آن لاین به سرور متصل بشند، و آخرین وضعیت کاربران آن لاین را از سرور دریافت کنند.



اگه میشه یه اطلاعاتی کامل از نحوه کارکرد در این نوع شبکه و نحوه پیاده سازی و خیلی چیزهای دیگه بفرمائید که من چیز زیادی نمی دونم در این باره بتونم این برنامه رو بنویسم
نحوه کارکردشون همینطوری هست که گفتم. درباره چگونگی کار شبکه های کامپیوتری انواع مقالات و کتاب ها وجود داره. درباره چگونگی کار با Indy یا چگونگی نوشتن یک برنامه چت هم چه در این سایت چه در سایت های دیگه انواع مثال ها و توضیحات وجود داره. معذرت میخوام، من نمی تونم برنامه شما را برای شما بنویسم، یا خط به خط کدهایی که باید بنویسید را برای شما توضیح بدم.

موفق باشید

ghasemshami
جمعه 27 شهریور 1388, 09:35 صبح
آقای کشاورز ممنون از راهنمایی تون مشکل من تا حدودی حل شد.
تونستم با indy ها client و server بسازم براساس شماره IP
این مشکل حل شد مشکل های دیگه ای هم دارم که اونا ریزه کاری این چت هستش

اول اینکه ارسال شکلک باید توش بزارم (از چه شی یا دستوری استفاده کنم که بتونم شکلک هم توش بزارم)

ارسال و دریافت فایل داشته باشه

Voice و WebCam صوت و تصویر هم داشته باشه

اگه میشه یه راهنمایی دیگه به بنده بکنید که مشکلم حل بشه

ممنون از شما دوستان بزرگوار

vcldeveloper
جمعه 27 شهریور 1388, 17:48 عصر
اول اینکه ارسال شکلک باید توش بزارم
لازم نیست شکلک ها را بفرستید، فقط کارکترهای شکلک را باید بفرستید، مثلا :-) و در سمت گیرنده، باید پیام دریافتی پردازش بشه، هر جا کارکترهای مربوط به یک شکلک پیدا شد، تصویر مناسب در متن جایگزاری بشه.


ارسال و دریافت فایل داشته باشه
درباره این موضوع هم در این سایت مثال هست، هم در Demoهای Indy.


Voice و WebCam صوت و تصویر هم داشته باشه
ارسال صوت و تصویر با استفاده از Indy کار ساده نیست؛ یعنی Indy یک کامپوننت سطح پایین هست؛ یک سری امکانات پایه ایی در اختیار شما میزاره که با استفاده از آنها شما می تونید برنامه های تحت شبکه بنویسید. متد یا دستوری وجود نداره که بنویسید و صوت و تصویر ارسال بشه. باید خودتون از هر روشی که برای خودتون مناسب تر هست، تصویر را از وب کم بگیرید، فشرده کنید، و از طریق شبکه ارسال کنید. در این زمینه هم حداقل یک نمونه پروژه در همین سایت هست. البته برای کارهای حرفه ایی یا باید خودتان در زمینه ارسال صوت و تصویر در شبکه، و انواع پروتکل های مربوط به آن تحقیق کنید و خودتان همه چیز را بنویسید، یا از کامپوننت های مخصوص ارسال صوت یا تصویر در شبکه استفاده کنید.

ghasemshami
جمعه 27 شهریور 1388, 19:12 عصر
حرف شما کاملا درسته باید شکلک رو به صورت کدهای نوشتاری ارسال کرد و در مقصد بازخوانی بشه اما مشکل من اینه که نمی دونم چطوری شکلک رو نمایش بدم

من الان دارم از memo برای ارسال و دریافت نوشته بهره می برم ام اما چطوری باید شکلک رو داخلش بزارم

در این زمینه لطف کنید . راهنمایی کنید

و در زمینه صوت و تصویر میشه برای این نمونه از نمونه برنامه ای که چند روز (ماه) پیش گذاشتند به نام کنفرانس محلی استفاده کرد. روی برنامه من کار میده این نمونه برنامه.

لطفا در این مورد هم کمک نمائید خواهشا

vcldeveloper
جمعه 27 شهریور 1388, 23:54 عصر
حرف شما کاملا درسته باید شکلک رو به صورت کدهای نوشتاری ارسال کرد و در مقصد بازخوانی بشه اما مشکل من اینه که نمی دونم چطوری شکلک رو نمایش بدم

من الان دارم از memo برای ارسال و دریافت نوشته بهره می برم ام اما چطوری باید شکلک رو داخلش بزارم
این سوال از بحث شبکه خارج هست، و باید در یک تاپیک جداگانه در تالار مباحث عمومی دلفی آن را مطرح کنید. درباره اش هم قبلا خودم توضیح دادم، یا می تونید مثل یاهو مسنجر از WebBrowser که همون IE هست در برنامه برای نمایش فرمت بندی متن، و نمایش تصاویر استفاده کنید؛ یا از کامپوننت هایی که برای این منظور وجود دارند، مثل کامپوننت RichView که امکان پشتیبانی از شکلک ها را خودش داره.

در هر حال، این سوال ربطی به این تاپیک پیدا نمیکنه.