چطور میتونم یه پورت دلخواه مثلا پورت 80، 4324 و ... هر پورت دیگه ای رو باز و بسته کنم؟
چطور میتونم یه پورت دلخواه مثلا پورت 80، 4324 و ... هر پورت دیگه ای رو باز و بسته کنم؟
کسی نیس جواب بده؟
آقا من پورت رو با close ميبندم ولي باز دفعه بعد كه مي خوام به اون دسترسي داشته باشم ميگه
ACCESS IS DENIED (دسترسي غير مجاز است)
لطفا راهنمايي كنيد كه چطور مي تونم پورت رو به طور كامل ببندم
پس از تمام ارسال ها و دریافت ها، در نهایت برای قطع ارتباط یک سوکت میتوان از دستورات 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)
ا تشكر از دوست عزيز keihancpu
و اما چند سوال
1- دستكاه من (كودم gsm) با كابل usb به كامپيوتر وصل ميشه كه در نهايت روي com4ميشينه ، آيا اين تفاوتي در همل ايجاد ميكنه؟
2- من هر دو دستور close و disposeرو اجرا مي كنم ولي باز همون خطا رو ميده؟
تنها وقتي پورت آزاد ميشه كه كابل usb رو دربيارم و مجدد وصل كنم، براي درك بهتر تصوير اون رو هم گذاشتم
این دوستمون منظورشون از پورت پورتهایی که شما میگید نیستچطور میتونم یه پورت دلخواه مثلا پورت 80، 4324 و ... هر پورت دیگه ای رو باز و بسته کنم؟
ایشون منظورشون پورتهای انتقال اطلاعات در Tcp/ip هست
اما شما گویا با پورتهای سخت افزاری کار دارید که کدهای فوق برای این کار کاربردی نداره !
مگز براي باز كردن و بستن پورت com از خود ابزاري كه در .netهست نميشه استفاده كرد (system.io.ports.serialport)
من از همين ابزار استفاده مي كنم و توسط اون ميشه پورت رو باز كرد و بست
ولي بستن درست كار نميكنه
خودتون میگید پورت Com و namespace هم معرفی کردیدمگز براي باز كردن و بستن پورت com از خود ابزاري كه در .netهست نميشه استفاده كرد (system.io.ports.serialport)
اما جواب دوستی که تایپیک رو ایجاد کردن در این namespace هست
System.Net.Sockets
سلام
شاید تاپیک زیر کمکتان کند:چطور میتونم یه پورت دلخواه مثلا پورت 80، 4324 و ... هر پورت دیگه ای رو باز و بسته کنم؟
https://barnamenevis.org/showthread.php?t=121111