ورود

View Full Version : فرستادن پیام در یک شبکه محلی



binyaz2003
شنبه 07 شهریور 1383, 14:39 عصر
با سلام
چطور تو یک برنامه تحت شبکه دو تا کاربر می تونن به هم پیغام بدن؟
یعنی چه کار باید بکنم تا یکی بتونه به یک شخص معین تو شبکه که هر دوتا شون دارن با برنامه من کار می کنند پیام بفرسته؟

rezaTavak
شنبه 07 شهریور 1383, 14:58 عصر
خب دو تا راه داره:
1- استفاده از کنترلهای شبکه
2- توی برنامه یه تایمر بذار که هر 30 ثانیه یک فایل را که حاوی پیام باشه چک کنه و از SYS شماره 0 برای کنترل ماشین شبکه استفاده کن.

MM_Mofidi
یک شنبه 08 شهریور 1383, 12:59 عصر
اگر اصرار بر کنترل دقیق پیام نداری می توانی از NET Send هم استفاده کنی.

rezaTavak
یک شنبه 08 شهریور 1383, 13:54 عصر
سلام

آقای مفیدی ممکنه بیشتر توضیح بدید؟

MM_Mofidi
یک شنبه 08 شهریور 1383, 18:16 عصر
پنجره run را باز کن سپس تایپ کن Net Send * "salam"
برای توضیح بیشتر فکر کنم اگه Net send را به تنهایی تایپ کنی توضیحاتی دارد.
دستور net به طور کلی خیلی کارها میکند.یکیش ارسال پیام در شبکه است که به کمک کلید Send انجام میشود.

rezaTavak
یک شنبه 08 شهریور 1383, 20:58 عصر
سلام

مرسی. من فکر کردم API است.

reza1357
سه شنبه 10 شهریور 1383, 22:12 عصر
پنجره run را باز کن سپس تایپ کن Net Send * "salam"
پارامتری به نام send داریم
:?:

kia1349
چهارشنبه 11 شهریور 1383, 06:45 صبح
با دستور api هم شدنیه مثال در vb


Private Declare Function NetMessageBufferSend Lib "NETAPI32.DLL" (yServer As Any,yToName As Byte,yFromName As Any,yMsg As Byte,ByVal lSize As Long) As Long

rezaTavak
چهارشنبه 11 شهریور 1383, 15:18 عصر
منم منظورم همینه

rezaTavak
چهارشنبه 11 شهریور 1383, 16:29 عصر
اقا رضا بله توی پنجره دستورات



Net send /?



را تایپ کن

reza1357
پنج شنبه 12 شهریور 1383, 08:18 صبح
سلام
توی چه ویندوزی من توی 98se امتحان کردم
اخه کلیدی به نام send پیدا نکردم

kia1349
پنج شنبه 12 شهریور 1383, 09:15 صبح
اگر بخواهید با net send کار کنید باید برای پرهیز از مشاهده صفحات احتمالی خالی یا هر قطع و وصل شدن ناگهانی تصویر و یا .... از تابع shellexcute استفاده کنید
ضمنا در نظر داشته باشید که این توابع مخصوص سیستم عاملهای سری nt به بالاست
برای win9x از توابع داخلی winsock استفاده کنید

reza1357
شنبه 14 شهریور 1383, 06:57 صبح
سلام



چطور تو یک برنامه تحت شبکه دو تا کاربر می تونن به هم پیغام بدن؟
یعنی چه کار باید بکنم تا یکی بتونه به یک شخص معین تو شبکه که هر دوتا شون دارن با برنامه من کار می کنند پیام بفرسته؟

دوست عزیز چندین روش هست که میشه توی برنامت پیغام بفرستی یا بگیری و یا اصلا به پیغامها دسترسی داشته باشی که یک راهش دوستان فرمودند

binyaz2003
شنبه 14 شهریور 1383, 08:25 صبح
چندین روش هست
خوب یکیشم شما بگید!

reza1357
شنبه 14 شهریور 1383, 11:42 صبح
سلام
بله یک روش هست اما ...
من دارم روی یک برنامه توپ کار می کنم که تحت شبکه با امکانات عالی تا اون موقه ...
ولی راهنمایتان می کنم :wink:

kia1349
یک شنبه 15 شهریور 1383, 07:55 صبح
اینم یه مثال کوچیک
بقیشو خودتون کامل کنید
توضیح اینکه باید اکتیو دایرکتوری موجود باشد
از ویندوز سری nt استفاده شود

binyaz2003
سه شنبه 17 شهریور 1383, 10:20 صبح
ممنون :heart:

binyaz2003
چهارشنبه 29 مهر 1383, 00:11 صبح
با کنترل winsock میشه یک برنامه chat کامل با همه امکگانات تحت شبکه نوشت
اگر vb 6 رو با هلپش داشته باشین مفصل توضیح داده با یک کم فکر می تونید از تو برنامه همه کار بکنید :sunglass:

binyaz2003
سه شنبه 19 آبان 1383, 15:04 عصر
http://www.barnamenevis.org/forum/viewtopic.php?t=16900
vbprogrammer یک مثال با پروتکل udp گزاشته تو آدرس بالا تو vb عالی کار می کنه اما همین و عینا تو فاکس پیاده کردم اصلا جواب نمیده؟
کمک :گیج:

reza1357
سه شنبه 19 آبان 1383, 21:47 عصر
سلام
امیدوارم به درد دوستان بخوره

reza1357
سه شنبه 19 آبان 1383, 21:49 عصر
چه عجب بعد از چند بار تلاش بلاخره شد :D

binyaz2003
سه شنبه 19 آبان 1383, 23:36 عصر
آقا خسته نباشید
ولی این که تو سایت arg که آقا کیا معرفی کردن بود آدرس میدادین دانلود می کردیم
بعد هم که رجیستر می خواد!!

binyaz2003
چهارشنبه 20 آبان 1383, 14:42 عصر
مشکل حل شد
اشکال از جای دیگری بود :oops:

reza1357
چهارشنبه 20 آبان 1383, 15:06 عصر
ولی این که تو سایت arg که آقا کیا معرفی کردن بود آدرس میدادین دانلود می کردیم
بعد هم که رجیستر می خواد!!
دوست عزیز
این را توی بایگانیم پیدا کردم و یادم نمیاد از کجا دانلود کردم اگر میدونستم ...
البته روش دیگری برای اینکار هست که دارم روی ان کار میکنم (روی سیستم جامعی دارم کار میکنم که درحال اتمام است که یکی از امکانات ان فرستادن پیغام و ... هست) دعا کنید به زودی از شرش خلاص شوم

binyaz2003
چهارشنبه 20 آبان 1383, 20:13 عصر
منم مثل شما
شما هم دعا کنید

MM_Mofidi
سه شنبه 26 آبان 1383, 01:46 صبح
راستی اگه از winsock استفاده کنیم windows messaging service از کدام پورت استفاده میکند؟

kia1349
سه شنبه 26 آبان 1383, 06:18 صبح
شما میتوانید از پورت 1-65535 استفاده کنید بستگی دارد .......
برای اطلاعات بیشتر به سایت http://www.sans.org/y2k/ports.htm مراجعه کنید

MM_Mofidi
چهارشنبه 27 آبان 1383, 04:28 صبح
نه میخواهم بتوانم با windows messaging service ارتباط برقرار کنم یعنی مثلا با مانیتور کردن یک پورت خاص مثلا 100 حتی اگر سرویس مربوطه در ویندوز قطع بود بتوانم خودم پیامها را مدیریت کنم.

mehran_337
یک شنبه 19 شهریور 1385, 10:30 صبح
با سلام خدمت دوستان
لطفا در باره پارامتر های winsok توضیح بدین . من اطلاعاتم درباره شبکه خیلی کمه و با اصطلاخات زیاد آشنایی ندارم اگه میشه یک مثال یا حداقل اینکه وقتی این کنترل به صفحه اضافه شد چطور یک پیغام ارسال کنیم و امکانات دیگر این کنترل چیه؟
با تشکر

mehran_337
دوشنبه 20 شهریور 1385, 18:57 عصر
من واقعا به کار با این اکتیوایکس نیاز دارم اگه می شه راهنماییم کنید

rezaTavak
دوشنبه 20 شهریور 1385, 19:32 عصر
http://support.microsoft.com/?kbid=315124

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconusingwinsockcontrol.asp

mehran_337
سه شنبه 21 شهریور 1385, 06:54 صبح
چی شد خلاصه . بچه هایی که کار کردن جواب ما رو هم بدن لطفا.
--------------------
به به آقای توکل !
مثل همیشه گل کاشتی . واقعا متشکرم

binyaz2003
سه شنبه 21 شهریور 1385, 13:40 عصر
لینک آقای توکل با سورس گویای همه چیز هست

mehran_337
سه شنبه 21 شهریور 1385, 14:42 عصر
بله بنده هم خیلی استفاده کردم و لینک جالبی بود.
اما از اونجایی که با اصول و اصلاحات شبکه آشنایی ندارم می خواهم بدانم اگر قرار باشد برنامه ام را به کلاینتها بدم باید 2 بار بیلد کنم یک بار با فرم سرور برای سیست سرور و بار دیگر با فرم کلاینت برای کلاینتها ؟؟؟؟؟؟
و سوال دوم اینکه چطور فرم را برای کلاینت اماده سازی کنم و چه مقادیری را باید تغییر بدهم.
تنظیماتش را متوجه نمی شوم
مورد بعد اینکه حتما کلاینت باید اول کانکت شود ؟ در صورتیکه سرور در ابتدا بخواهد به کلاینت پیام دهد چه کار باید کرد؟
با تشکر

mehran_337
سه شنبه 21 شهریور 1385, 15:47 عصر
با سلام مجدد
دو تا پروژه درست کردم : کلاینت و سرور
از اونجایی که در کلاینت دکمه کانکن وجود داشت :
thisform.tcpclient.object.remothost = "a1"
کد فوق را وارد کردم a1 اسم همون کامپیوتر کلاینت بود
\\ a1هم (file://\\ a1هم) زدم اما هیچکدوم فایده نداشت.
با اسم سرور هم امتحان کردم اما یازهم جواب نگرفتم یعنی نات کانکت می داد اگه میشه راهنماییم کنید با تشکر

rezaTavak
سه شنبه 21 شهریور 1385, 20:16 عصر
با آی پی هم تست کردید؟

mehran_337
چهارشنبه 22 شهریور 1385, 07:32 صبح
یعنی در thisform.tcpclient.object.remothost مقدار آی پی را داخل کوتیشن قرار دهم؟

mehran_337
چهارشنبه 22 شهریور 1385, 07:38 صبح
بله . اونهم زدم به این صورت :
thisform....remothost = '\\192.168.0.1'
بازم درست نشد.البته این پروژه در یک سیستم مشکلی نداره فقط می خوام بدوم من همین گزینه را باید تغییر بدهم یا کار دیگه ای هم باید بکنم . با تشکر

binyaz2003
چهارشنبه 22 شهریور 1385, 12:15 عصر
فقط باید remothost رو روی سرور ست کنید . آ ی پی رو هم بدون اسلش و بدون کتیشن بزارید
دقیقا مثل مثال

mehran_337
چهارشنبه 22 شهریور 1385, 13:21 عصر
منظورت چیه . آخه در مثال این دستور فقط توی فرم کلاینت نوشته شده . حال منظورت اینه که در فرم کلاینت آی پی سرور رو بدم؟؟؟

mehran_337
چهارشنبه 22 شهریور 1385, 14:26 عصر
آقای بی نیاز
امیدوارم هیمشه بی نیاز باشی .
ممنونم که کد مناسبت جواب سوالمو داد . خلاصه موفق شدم.
توسط زحمتی که آقای توکل کشیدند و لینک بسیار جالبی را فرستادند و راهنمایی آقای بی نیاز این پروژه در سیتم های مختلف جواب داد. در پست بعدی روش کار را براتون توضیح می دم.
قابل توجه دوستان : روش این کارو براتون توضیج می دم .

mehran_337
چهارشنبه 22 شهریور 1385, 14:44 عصر
روش کار :

ابتدا پروژه پیشنهادی آقای توکل را که به حق تکمیل می باشد دانلود کنید.
درون همان شاخه یک پروژه جدید با نام server ایجاد کنید.
فرم server.scx را در پروژه خود اضافه کنید. فقط شماره پورت با 1001 جواب داد . البته در پروژه من.
پروژه را exe کنید.

حال در همان شاخه دوباره پروژه جدید را با نام client ایجاد کنید.
فرم client.scx را در پروژه خود اضافه کنید.
کدهای init فرم فوق الذکر را پاک کنید.
دکمه connect را باز کرده و در واقعه کلیک آن بجای کدهای موجود این کد ها را وارد کنید :


thisform.tcpclient.protocol = 0
thisform.tcpclient.remoteHost = "آی پی سیستمی که می خواهید متن بفرستید"
thisform.tcpclient.remoteport = 1001
thisform.tcpclient.localport = 0
thisform.tcpclient.object.connect()


البته آقای بی نیاز برایم
thisform.tcpclient.remoteport = 6060 را فرستاده بودند که جواب نداد . حال سوال من این است که این پورت اصلا چیه و از کجا باید فهمید که کدوم درسته؟ اگه میشه یه کم توضیح بدید
با تشکر

mehran_337
یک شنبه 02 مهر 1385, 11:13 صبح
این سوال من بی جواب موند . من برای سیستم های مختلف که نمی تونم توی هر سیستم netstat -a بزنم ببینم پورت خالی کدومه چه پورتی بدم که توی همه سیستمها بتونه جواب بده .

binyaz2003
دوشنبه 03 مهر 1385, 09:50 صبح
میتونید یک پورت بعنوان پیش فرض داشته باشید امتحان میکنید اگر وصل نشد از کاربر میخواهید که شماره پورت مورد نظرشو وارد کنه و اونو یکجا ذخیره میکنید. البته اگر شماره های بالا رو در نظر بگیرید خیلی کم پیش میآد
یک نکته دیگه اینکه این گشتن دنبال پورت آزاد فقط روی سرور انجام میشه!

mehran_337
دوشنبه 03 مهر 1385, 10:11 صبح
1 - پورت رو فقط یکبار باید بدیم ؟؟؟؟؟ یا نه هر سری که متصل شدیم باید پورت جدیدی رو بدیم
2 - کاربر چطوری باید پورتشو بده با همون netstat
3 - پورت سرور برای تمام کلاینتها استفاده میشه؟؟؟
4 - پورت همیشه عدد 4 رقمیه؟؟ از چند تا چند؟
ببخشیدا چون من در این زمینه خیلی ضعف دارم

binyaz2003
دوشنبه 03 مهر 1385, 11:18 صبح
1-شما برای سرور بایستی یک پورت رو مشخص کنید تا در آن لیسن بشه و برای کلاینتها هم بایستی پورتی رو که سرور لیسن هست رو مشخص کنید تا کانکت شن.
2-بستگی به اطلاعات کاربر داره در یاهو مسنجر هم برای ارسال فایل اگر پورت پیش فرظ مشغول باشه تقاضای یک پورت جدید رو از کاربر میکنه
3-جواب این سئول رو در 1 دادم
4-این و دقیق نمیدونم

mehran_337
دوشنبه 03 مهر 1385, 11:27 صبح
خیلی خوب بود واقعا متشکر .