PDA

View Full Version : سوال: باز کردن و بستن Port ها



maminb
سه شنبه 29 بهمن 1387, 21:25 عصر
چطور میتونم یه پورت دلخواه مثلا پورت 80، 4324 و ... هر پورت دیگه ای رو باز و بسته کنم؟

maminb
چهارشنبه 30 بهمن 1387, 16:11 عصر
کسی نیس جواب بده؟

mohammad-gh
شنبه 11 مهر 1388, 12:40 عصر
آقا من پورت رو با close‌ ميبندم ولي باز دفعه بعد كه مي خوام به اون دسترسي داشته باشم ميگه
ACCESS IS DENIED (دسترسي غير مجاز است)
لطفا راهنمايي كنيد كه چطور مي تونم پورت رو به طور كامل ببندم

.:KeihanCPU:.
شنبه 11 مهر 1388, 12:47 عصر
پس از تمام ارسال ها و دریافت ها، در نهایت برای قطع ارتباط یک سوکت میتوان از دستورات Close و Dispose و Shutdown استفاده کرد.
در خصوص شی سوکت دستور Close و Dispose عملکرد یکسانی دارند و سوکت را کاملاً بسته و به نوعی نابود میکند و منابع سیستم عامل را آزاد میکنند.

اما دستور Shutdown یک پارامتر از نوع System.Net.Sockets.SocketShutdown میگیرد و میتواند خط ارسال و دریافت را جداگانه ببندد.
پیغامی که در عوض بسته شدن سوکت در یک سر به سوکت نظیر در آن سر میرسد، دریافت اطلاعات جدید با طول صفر بایت است.
هنوز دستور دریافت اطلاعات را نگفته ایم ولی فعلاً بدانید که اگر اطلاعاتی با تعداد بایت صفر، دریافت شود، یعنی سوکت نظیر در آن سمت، دیگر وجود ندارد و قائدتاً باید در این سمت هم درصورت نیاز منابع سیستم را آزاد کنیم.

در برخی برنامه ها که بسته شدن کامل و امن هر دو سوکت برایشان خیلی مهم است، اول Shutdown را با Send اجرا میکنند و بعد هم منتظر رسیدن پیغام نظیر از سوکت سمت دیگر میشوند و بعد سوکت را کامل میبندند.
ولی اکثراً یک Close ساده، کافی است.

سه دستور زیر تقریباً یک نتیجه دارند:

socket.Close()
DirectCast(socket, System.IDisposable).Dispose()
socket.Shutdown(System.Net.Sockets.SocketShutdown. Both)

mohammad-gh
شنبه 11 مهر 1388, 13:05 عصر
ا تشكر از دوست عزيز keihancpu
و اما چند سوال
1- دستكاه من (كودم gsm) با كابل usb به كامپيوتر وصل ميشه كه در نهايت روي com4‌ميشينه ، آيا اين تفاوتي در همل ايجاد ميكنه؟
2- من هر دو دستور close و dispose‌رو اجرا مي كنم ولي باز همون خطا رو ميده؟
تنها وقتي پورت آزاد ميشه كه كابل usb رو دربيارم و مجدد وصل كنم، براي درك بهتر تصوير اون رو هم گذاشتم

.:KeihanCPU:.
شنبه 11 مهر 1388, 13:09 عصر
چطور میتونم یه پورت دلخواه مثلا پورت 80، 4324 و ... هر پورت دیگه ای رو باز و بسته کنم؟

این دوستمون منظورشون از پورت پورتهایی که شما میگید نیست
ایشون منظورشون پورتهای انتقال اطلاعات در Tcp/ip هست
اما شما گویا با پورتهای سخت افزاری کار دارید که کدهای فوق برای این کار کاربردی نداره !

mohammad-gh
شنبه 11 مهر 1388, 13:33 عصر
مگز براي باز كردن و بستن پورت com از خود ابزاري كه در .net‌هست نميشه استفاده كرد (system.io.ports.serialport)
من از همين ابزار استفاده مي كنم و توسط اون ميشه پورت رو باز كرد و بست
ولي بستن درست كار نميكنه

.:KeihanCPU:.
شنبه 11 مهر 1388, 15:31 عصر
مگز براي باز كردن و بستن پورت com از خود ابزاري كه در .net‌هست نميشه استفاده كرد (system.io.ports.serialport)
خودتون میگید پورت Com و namespace هم معرفی کردید
اما جواب دوستی که تایپیک رو ایجاد کردن در این namespace هست
System.Net.Sockets

__H2__
دوشنبه 13 مهر 1388, 12:56 عصر
سلام

چطور میتونم یه پورت دلخواه مثلا پورت 80، 4324 و ... هر پورت دیگه ای رو باز و بسته کنم؟
شاید تاپیک زیر کمکتان کند:
http://barnamenevis.org/forum/showthread.php?t=121111