# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET > سوال: باز کردن و بستن Port ها

## maminb

چطور میتونم یه پورت دلخواه مثلا پورت 80، 4324 و ... هر پورت دیگه ای رو باز و بسته کنم؟

----------


## maminb

کسی نیس جواب بده؟

----------


## mohammad-gh

آقا من پورت رو با close‌ ميبندم ولي باز دفعه بعد كه مي خوام به اون دسترسي داشته باشم ميگه 
ACCESS IS DENIED  (دسترسي غير مجاز است)
لطفا راهنمايي كنيد كه چطور مي تونم پورت رو به طور كامل ببندم

----------


## .:KeihanCPU:.

پس از تمام ارسال ها و دریافت ها، در نهایت برای قطع ارتباط یک سوکت میتوان از دستورات 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

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

----------


## .:KeihanCPU:.

> چطور میتونم یه پورت دلخواه مثلا پورت 80، 4324 و ... هر پورت دیگه ای رو باز و بسته کنم؟


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

----------


## mohammad-gh

مگز براي باز كردن و بستن پورت com  از خود ابزاري كه در .net‌هست نميشه استفاده كرد (system.io.ports.serialport)
من از همين ابزار استفاده مي كنم و توسط اون ميشه پورت رو باز كرد و بست 
ولي بستن درست كار نميكنه

----------


## .:KeihanCPU:.

> مگز براي باز كردن و بستن پورت com  از خود ابزاري كه در .net‌هست نميشه استفاده كرد (system.io.ports.serialport)


خودتون میگید پورت Com و namespace هم معرفی کردید
اما جواب دوستی که تایپیک رو ایجاد کردن در این namespace هست
System.Net.Sockets

----------


## __H2__

سلام



> چطور میتونم یه پورت دلخواه مثلا پورت 80، 4324 و ... هر پورت دیگه ای رو باز و بسته کنم؟


شاید تاپیک زیر کمکتان کند:
https://barnamenevis.org/showthread.php?t=121111

----------

