PDA

View Full Version : سوال: مشکل در سوکت پروگرمینگ



chapali
پنج شنبه 09 تیر 1390, 13:05 عصر
با عرض سلام و خسته نباشید خدمت تمامی اساتید بزرگ و بزرگوار سایت برنامه نویس
راستش من تازگی ها علاقه مند شدم به سوکت پروگرمینگ
واسه همینم رفتم دنبالش توی یکی از تاپیک های همین سایت آموزش داده شده بود که خدارو شکر خوب بود
من طبق آموزش عمل کردم ولی به مشکل خوردم برنامه خطا نداره ولی درست کار نمی کنه

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

سورس برنامه رو هم آپلود کردم دوستان خواهشمندم سریعتر کمک کنند چون نیاز فوری دارم
71757

alimanam
پنج شنبه 09 تیر 1390, 14:27 عصر
با سلام

سری به این لینک (http://www.codeproject.com/KB/IP/ChatAsynchTCPSockets.aspx) بزنید فکر میکنم جواب سوالتون رو میتونین پیدا کنین .

موفق باشید ./

chapali
پنج شنبه 09 تیر 1390, 14:42 عصر
ممنون ولی کمکی نکرد چون سورس سی بود نه وی بی البته فرق زیادی ندارند تو این بخش اما من می خوام دوستان اگه میشه مشکل سورس خودم رو بگن
بازم ممنون

bnnoor
پنج شنبه 09 تیر 1390, 17:32 عصر
سلام دوست عزیز طبق این مقاله پیش برید امیدوارم که مشکلتون حل بشه .
71763

chapali
دوشنبه 13 تیر 1390, 12:16 عصر
با عرض سلام مجدد و تشکر بابت کمک و راهنمایی خوبتون
راستش من موفق شدم ولی دو تا سوال کوچیک برام پیش آمد که خواستم بپرسم
در ابتدا کد برنامه رو می زارم
سمت کلاینت
Dim ip As IPEndPoint = New IPEndPoint(IPAddress.Parse("192.168.21.2"), 5050)
Dim client As Socket = New Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
client.Connect(ip)
client.Send(System.Text.ASCIIEncoding.ASCII.GetByt es(TextBox1.Text))
client.Close()
سمت سرور
Dim ip As IPEndPoint = New IPEndPoint(IPAddress.Any, 5050)
Dim client As Socket
Dim server As Socket = New Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp)

server.Bind(ip)
server.Listen(Integer.MaxValue)
client = server.Accept
Dim rec(1024) As Byte
client.Receive(rec)
MsgBox(System.Text.ASCIIEncoding.ASCII.GetString(r ec))
طبق این برنامه با زدن دکمه ای از سمت سرو و همچنین از سمت کلاینت یک ارتباط بین هر دو رایانه برقرار می شود و همچنین پیغامی به دلخواه توسط رایانه کلاینت به سرور ارسال می شود
اما سوال اینجاست اگه من بخوام بعد از کانکت شدن اول به تعداد دلخواه پیغام برای کامپیوتر دوم بفرستم باید چی کار کنم یعنی چه تغییر ی لازم داره و آیا باید server.listen رو تو تایمر بزارم تا پیغاما رو دریافت کنه یا نه این تابع خودش هر وقت که یک پیعام ارسال میشه متوجه می شه و نمایش می ده خوب اگر اینطوری باشه توی یک سیستم چت باید چی کار کرد
یعنی باید هی کانکت شد و پیعام ارسال بشه و بعد دیسکانکت شده ؟
یک سوال دیگه من وقتی خواستم پیغام دریافت شده از کلاینت رو با یک رشته مقایسه کنم مقایسه درست انجام نمیشد چرا؟
درصورتی که وقتی همون پیغام دریافت شده رو در یک تکست باکس گذاشتم و بعد مقایسم رو با تکست باکس انجام دادم درست شد؟
یعنی چه اطلاعات اضافی دیگه ای به غیر از متن ارسال شده توسط سیستم دریافت میشه که مقایسه رو درست انجام نمی ده؟
دوستان خواهشمندم کمک کنند ممنون

chapali
چهارشنبه 15 تیر 1390, 18:02 عصر
دوستان من هنوز منتظر یک جوابم
یعنی سوالم اینقدر سخته؟

feri_sharp
جمعه 17 تیر 1390, 20:12 عصر
سلام دوستان منم یه مشکل توی سوکت برنامه ای که دارم مینویسم پیدا کردم گفتم بیام بپرسم توی این تاپیک دیگه تاپیک نزنم.

سوال : چه جوری میشه که وقتی شما دستور شروع به Listen کردن رو با یه Thread داخل Procedure لود شدن فرم برنامه Start کردین ولی زمانی که برنامه اجرا میشه داخل تایمری که دستور if listener .pending داره. یه Exception پرت کنه بگه که شما باید اول شروع به Listen کردن کنید؟
در واقع باید بگم که مشکل من اینه که من دستور شروع به گوش کردن به Port رو براش نوشتم. ولی میگه شما یک همچین کاری انجام ندادین.

یه سوال دیگه هم هست : چجوری میشه از یک سوکت برای چند تا فرم استفاده کرد ؟

chapali
جمعه 17 تیر 1390, 23:39 عصر
سلام دوستان منم یه مشکل توی سوکت برنامه ای که دارم مینویسم پیدا کردم گفتم بیام بپرسم توی این تاپیک دیگه تاپیک نزنم.

سوال : چه جوری میشه که وقتی شما دستور شروع به Listen کردن رو با یه Thread داخل Procedure لود شدن فرم برنامه Start کردین ولی زمانی که برنامه اجرا میشه داخل تایمری که دستور if listener .pending داره. یه Exception پرت کنه بگه که شما باید اول شروع به Listen کردن کنید؟
در واقع باید بگم که مشکل من اینه که من دستور شروع به گوش کردن به Port رو براش نوشتم. ولی میگه شما یک همچین کاری انجام ندادین.

یه سوال دیگه هم هست : چجوری میشه از یک سوکت برای چند تا فرم استفاده کرد ؟
سلام
منو باش وقتی دیدم تاپیک پست بهش اضافه شده گفتم حتما جوابمو گرفتم (به همین خیال باش!)
دوست عزیز اینجا جای این سوالا نیست اینجا فقط صرفا دوستان اگه مقاله ای راجع به سوکت داشته باشند که کمک کنه می گند وگرنه وضعیتشون مثل ماهاست(البته جسارت نباشه ها به دلیل عدم پاسخگویی به سوال بنده ی حقیر که بسیار سوال ساده ای بود و الان چند روزه من به امید دوستان نشستم می گم و منظورم اونایی نیست که اساتیدی هستند و تا الان وقت نکردن به این تاپیک سر بزنند)
به هر حال دوست عزیز کدت رو بده ببینم مشکلش رو بهت بگم
راجع به پاسخ سوال خودم واسه اونایی که مشکل منو دارن
خیلی ساده که هیچ کسم جواب نداد
جواب سوال خودم:تعریف سوکت و آی پی توی جنرال انجام بشه و هنگام لود فرم و دستور ارسال متن و دریافت نیز توسط کامند انجام بشه به همین سادگی
اما بخش دریافت درسته کار می کنه ولی من می خوام هی لحظه به لحظه چک کنم ببینم پیغامی از طرف کامپیوتری یا کامپیوتر های دیگه ارسال شده یا نه
حالا دوستان اگر محبت کنن و راهنمایی کنن ایندفه رو که من چجوری می تونم چک کنم ببینم پیغام برای کامپیوتر ارسال شده یا نه خیلی ممنون می شم
البته منظورم اینه که اگر کامپیوتر سرور یک متن رو واسه کامپیوتر کلاینت می فرسته کامپیوتر کلاینت چک کنه ببینه آیا در حال حاظر متنی براش ارسال شده یا نه و اگر ارسال شده متن دریافتی رو چاپ کنه
_(دوستان از لحنم ناراحت نشن یک وقتی من فقط صبرم تموم شده بود)

mlf_mlv
سه شنبه 21 تیر 1390, 01:36 صبح
توی یه حلقه بینهایت توی یه ترد بندازیش درست می شه فکر کنم
راستش من توی vb.net سوکت ننوشتم، ولی تو زبونهای دیگه اینطوریه

smr_alavi1
دوشنبه 27 تیر 1390, 15:17 عصر
با سلام
من وقت تایپ کردن ندارم ولی با VB.net یه مسنجر کامل نوشتم که حرفه ای هست
اگه خواستی کمکت کنم یه email بزن به smr.alavi1@gmail.com تا شماره موبایلم رو برات بفرستم
بعد راهنمایت می کنم

ahmadreza517
پنج شنبه 27 مرداد 1390, 16:43 عصر
سلام دوست عزیز
تاپیکی که در باره برنامه نویسی سوکت خونده بودی می تونی لینکشو این جا بذاری تا منم برم بخونم {دستت درد نکنه}