View Full Version : سوال: میشه رویداد dataArrival رو خودمون صدا بزنیم؟
saeed_sho
سه شنبه 03 مرداد 1391, 11:17 صبح
سلام
آیا میشه رویداد winsock_dataArrival رو خودمون صدا بزنیم وقتی که از وینسوک بصورت آرایه استفاده میکنیم یعنی دیتا رو که ارسال کردیم چند ثانیه بعد خودمون dataArrival رو صدا بزنیم
جوابش برام خیلی مهمه ممنون میشم جواب بدید
محسن واژدی
سه شنبه 03 مرداد 1391, 11:32 صبح
سلام علیکم
رویداد DataArrival هم همانند سایر روال ها میتوانیم بصورت احضار با Call یا CallByName فراخوانی کنیم، اما بصورت احضار رویداد (Raise-Event) نمیتوانیم
موفق باشید
saeed_sho
سه شنبه 03 مرداد 1391, 11:41 صبح
ممنون از توجهتون
من از وینسوک آرایه استفاده میکنم و مقدار ایندکس رو 1 میزارم اما برای پارامتر bytesTotal نمیدونم چند بزارم آخه معلوم نیست و هر دفعه تغییر میکنه
برای اون موقع call چند بزارم تا اطلاعاتم رو کامل دریافت کنم؟
محسن واژدی
سه شنبه 03 مرداد 1391, 11:52 صبح
من از وینسوک آرایه استفاده میکنم و مقدار ایندکس رو 1 میزارم اما برای پارامتر bytesTotal نمیدونم چند بزارم آخه معلوم نیست و هر دفعه تغییر میکنه
برای اون موقع call چند بزارم تا اطلاعاتم رو کامل دریافت کنم؟
به اینصورت که میفرمائید نمیشود، به عبارتی پس از ارسال درخواست رویداد DataArrival نتیجه در خواست ارسال شده را برگشت میدهد و طول bytesTotal نیز براساس دیتای دریافتی توسط وینساک مقدار دهی میشود
saeed_sho
سه شنبه 03 مرداد 1391, 12:05 عصر
خوب اینجوری که ما صداش نزدیم بازم خودش رخداده درسته؟
شما میشه یه خط کد مینویسید و رویداد رو call کنید
M.T.P
سه شنبه 03 مرداد 1391, 12:27 عصر
این ایونت بصورت خودکار پس از دریافت دیتا از شبکه اجرا میشه ، اینکه شما می خواید بصورت دستی صداش بزنید اصلا منطقی نیست و اصلا
در صورت صدا زدن توسط شما دیتایی دریافت نمیشه ! آرگومان byteTotal بصورت خودکار به نسبت مقدار دیتای دریافتی مقدار دهی میشه و
نیاز نیست شما مقدار دهی کنید.
یه مثال:
مگه ما می تونیم بریم مامور اداره پست رو به زور مجبور کنیم برامون نامه بیاره؟ باید حتما نامه ای بیاد که مامور پست بیاره :لبخند:
saeed_sho
سه شنبه 03 مرداد 1391, 13:30 عصر
من یه حلقه دارم که اطلاعاتوذ ارسال میکنه توی همون حلقه باید dataArrival رو صدا بزنه و مقدار دریافتی رو ببینه و پردازش کنه و یه مقدار مناسب دوباره ارسال کنه و دوباره جوابشو پردازش کنه و همینجوری حلقه ادامه داره اما dataArrival اگه صدا زده نشه چطوری اینکارو بکنم؟
saeed_sho
سه شنبه 03 مرداد 1391, 14:22 عصر
اگه از حلقه استفاده کنم وهر 6چند ثانیه اطلاعات رو بفرسته چی؟ میشه؟
M.T.P
سه شنبه 03 مرداد 1391, 17:59 عصر
ببینید همینطور که احتمالا مستحضر هستید برنامه های نوشته شده با vb6 بصورت single thread هستند و شما مجبورید روشی غیر از روشی رو که ذکر کردید در نظر بگیرید حالا هرطور که به نظرتون بهتره.
باید از متغیرها استفاده کنید مثلا متغیری داشته باشید که هنگامی پک اول ارسال شد مقدارش تغییر کنه به این معنی که دیتا ارسال شده و منتظر جواب هست ، بعد موقع دریافت دیتا که پاسخ هست متغیر رو بررسی می کنید که آیا این دیتا جواب پک ارسالیتون هست یا نه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.