View Full Version : سوال: من یه کلینت ،سرور نوشتم ، کانکت میشه ولی...
omid22
یک شنبه 21 شهریور 1389, 00:48 صبح
با عرض سلام و خسته نباشید خدمت دوستان.
من یه برنامه کلینت سرور نوشتم ، کانکت میشه به سرور ولی فرمانهایی که بهش دادم اجرا نمیکنه.
لطف کنید یه نگاهی به سورسش بندازید ببینید مشکل از کجاست ؟؟؟
کمپایل شدش رو هم قرار دادم.
خیلی ممنون میشم.
iltsaetsi
سه شنبه 23 شهریور 1389, 02:20 صبح
کدی که نوشتی اشکالات زیادی داره که هم رو بهت می گم :
1- پورت 7777 از قبل رزرو شده . می تونی از یه پورت دیگه استفاده کنی مثلا 1231
2- تو کلاینت تو قسمت ارسال پیام متغیر هایی که استفاده کردی بیشترشون ناهماهنگ هستند . مثلا برای اجرای notepad کد زیر رو نوشتی :
Dim str1data As String
stdata = "runnotepad"
Winsock1.SendData str1data
تو این کد متغیر str1data رو تعریف کردی ولی پیام رو تو متغیر stdata گذاشتی آخرش هم متغیر str1data رو ارسال کردی که اصلا مقدار دهی نشده .
کد درست و کوتاه تر اینه :
Winsock1.SendData "runnotepad"
3- تو کلاینت winsock رو به صورت فرستنده تعریف کردی پس زیرروال Winsock1_DataArrival نمی تونه کار کنه چون اصلا winsock تو حالت listen نیست . اگه می خوای کلاینت هم پیام بفرسته هم بگیره یه راهش اینه که دو تا winsock تعریف کنی یکی برای ارسال یکی برای دریافت .
4- تو سرور در زیرروال Winsock1_ConnectionRequest کلمه ی sckClosed رو به اشتباه sckcloset نوشتی .
5- تو زیرروال Winsock1_DataArrival تو سرور کدهای DoEvents اضافی هستن . این کد بیشتر به درد توبع گرافیکی می خوره . در ضمن اول این زیرروال باید پیام رو با کد زیر دریافت کنی :
Dim data As String
Winsock1.GetData data
همچنین بهتره بجای استفاده مکرر از دستور elseif از دستور select case استفاده کنی چون خوانایی کدهای برنامت بیشتر میشه . مثل کد زیر :
Select Case data
Case "closeme"
Unload Me
Case "open"
Call ejectcd
Case "closecd"
Call closecd
Case "runwincalc"
Shell "calc.exe"
Case "runnotepad"
MsgBox "bvnvb"
Shell "notepad.exe"
End Select
SilverLearn
سه شنبه 23 شهریور 1389, 02:49 صبح
سلام به دوستان گرامي من يه برنامه در رابطه با اين مقوله براتون مي زارم كه دانلود كنيد و حالشو ببريد ولي تشكر يادتون نره
راستي اين سورس مي تونه آموزش خوبي در اين رابطه باشه
omid22
سه شنبه 23 شهریور 1389, 14:45 عصر
کدی که نوشتی اشکالات زیادی داره که هم رو بهت می گم :
1- پورت 7777 از قبل رزرو شده . می تونی از یه پورت دیگه استفاده کنی مثلا 1231
2- تو کلاینت تو قسمت ارسال پیام متغیر هایی که استفاده کردی بیشترشون ناهماهنگ هستند . مثلا برای اجرای notepad کد زیر رو نوشتی :
Dim str1data As String
stdata = "runnotepad"
Winsock1.SendData str1data
تو این کد متغیر str1data رو تعریف کردی ولی پیام رو تو متغیر stdata گذاشتی آخرش هم متغیر str1data رو ارسال کردی که اصلا مقدار دهی نشده .
کد درست و کوتاه تر اینه :
Winsock1.SendData "runnotepad"
3- تو کلاینت winsock رو به صورت فرستنده تعریف کردی پس زیرروال Winsock1_DataArrival نمی تونه کار کنه چون اصلا winsock تو حالت listen نیست . اگه می خوای کلاینت هم پیام بفرسته هم بگیره یه راهش اینه که دو تا winsock تعریف کنی یکی برای ارسال یکی برای دریافت .
4- تو سرور در زیرروال Winsock1_ConnectionRequest کلمه ی sckClosed رو به اشتباه sckcloset نوشتی .
5- تو زیرروال Winsock1_DataArrival تو سرور کدهای DoEvents اضافی هستن . این کد بیشتر به درد توبع گرافیکی می خوره . در ضمن اول این زیرروال باید پیام رو با کد زیر دریافت کنی :
Dim data As String
Winsock1.GetData data
همچنین بهتره بجای استفاده مکرر از دستور elseif از دستور select case استفاده کنی چون خوانایی کدهای برنامت بیشتر میشه . مثل کد زیر :
Select Case data
Case "closeme"
Unload Me
Case "open"
Call ejectcd
Case "closecd"
Call closecd
Case "runwincalc"
Shell "calc.exe"
Case "runnotepad"
MsgBox "bvnvb"
Shell "notepad.exe"
End Select
سلام دوست عزیز
خیلی ممنون کلی بهم کمک کردید
باز هم ممنون از کمکتون
--------------------
سلام به دوستان گرامي من يه برنامه در رابطه با اين مقوله براتون مي زارم كه دانلود كنيد و حالشو ببريد ولي تشكر يادتون نره
راستي اين سورس مي تونه آموزش خوبي در اين رابطه باشه
سلام دوست عزیز
خیلی ممنون پروژه ی خوبی هست کمک بهم کرد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.