PDA

View Full Version : حرفه ای: اتصال دو سیستم مختلف به هم از طریق اینترنت



mahdiidham1383
جمعه 03 مرداد 1399, 18:08 عصر
با سلام
یه پروژه تصمیم دارم انجام بدم که طی اون دو سیستم از طریق اینترنت به هم وصل بشن و فایل و پیام انتقال بدن( به هیچ عنوان نمی خوام از طریق سرور باشه چون واسه انتقال فایل خیلی تاخیر ایجاد میشه و حجم زیادی الکی هدر میشه)
در نتیجه دوتا راه داریم( حداقل دوتاش من پیدا کردم) یکی ش که WebRTC که میشه گفت به نتیجه ای نرسیدم چون نتونستم به C#‎‎ وصلش کنم، یک راه دیگه هم WebSocket که اونم تست کردم ولی فقط واسه شبکه Lan بود، دوستان راه دیگه ای سراغ دارین، یا روشی بلدید که این دو روش کامل کنم؟

مهدی کرامتی
جمعه 03 مرداد 1399, 18:26 عصر
حداقل یکی از سیستم ها میبایست یک آی پی ثابت داشته باشه و اون سیستم به عنوان Endpoint یا رابط تبادل داده ها عمل کنه. اگر از سرور نمی خواهید استفاده کنید برای مودم مورد استفاده یک آی پی ثابت بگیرید و در تنظیمات Port Forwarding اش یک پورت مپ تعریف کنید که سیستم مورد نظر با شماره پورت مشخص روی اینترنت در دسترس باشه.

mahdiidham1383
جمعه 03 مرداد 1399, 18:30 عصر
WebSocket حتما ایپی ثابت میخواد برای اتصال تحت اینترنت ؟

مهدی کرامتی
جمعه 03 مرداد 1399, 18:50 عصر
برای اینکه مقصد ارتباط رو مشخص کنید در غیر اون صورت چطوری می خواهید آدرس بدید؟
یک آدرس باید وجود داشته باشه.

mahdiidham1383
جمعه 03 مرداد 1399, 18:53 عصر
خب ایپی داینامیک مشکلش چیه ؟ ببینید من میتونم درخواست اتصالم و ایپی فعلی رو از طریق سرور (هاست) بفرستم به سیستم مورد نظر ، اون ایپی بگیره و به اون وصل شه ، ممکن نیست ؟

مهدی کرامتی
جمعه 03 مرداد 1399, 18:57 عصر
اونطوری هم ممکنه بشه راه اندازی اش کرد. ولی کار آسونی نیست.

mahdiidham1383
جمعه 03 مرداد 1399, 19:01 عصر
واقعا ممنون همین حرفتون من به این راه امیدوار کرد ، حدود 1 ماه دنبال یه راه میگشتم ، دیگه داشتم ناامید میشدم، منبعی واسه مطالعه ، شخصی برای سوال پرسیدن یا سایت و ویدیو میتونید معرفی کنید ؟ که یک مقدار کمکم کنه ؟

مهدی کرامتی
جمعه 03 مرداد 1399, 19:18 عصر
مطالعه چندانی نیاز نداره. عبارت Free DNS را در گوگل جستجو کنید.

هر سایتی که خدمات فوق رو ارائه میده خودش معمولا راهنمای استفاده رو هم گذاشته.

mahdiidham1383
جمعه 03 مرداد 1399, 19:22 عصر
در سایت ها DNS اموزش اتصال WebSocket در سی شارپ موجوده ؟؟!!:متفکر:

مهدی کرامتی
جمعه 03 مرداد 1399, 21:07 عصر
خیر. آموزش راه اندازی Dynamic DNS.

mahdiidham1383
چهارشنبه 08 مرداد 1399, 19:23 عصر
استاد سلام ، ip static درست شد حالا چطور میشه به کسی وصل شد ؟

مهدی کرامتی
چهارشنبه 08 مرداد 1399, 19:35 عصر
استاد سلام ، ip static درست شد حالا چطور میشه به کسی وصل شد ؟
بقیه ماجرا اینه که در یک سیستم شما یک برنامه ای دارید که در حال اجراست و روی یک شماره پورت مشخص منتظر دریافت درخواست است، در سیستم دوم با پروتکل مناسب به آدرس سیستم فوق وصل می شوید و تبادل داده، یا فرخوانی توابع رو انجام می دهید.

mahdiidham1383
چهارشنبه 08 مرداد 1399, 19:46 عصر
string ip = "188.212.86.156";
IPAddress ipAdress = IPAddress.Parse(ip);
IPEndPoint localEndpoint = new IPEndPoint(ipAddress, 3200);
Socket sock = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
sock.Bind(localEndpoint);
sock.Listen(5);



الان این تیکه کد برای سرور نوشتم و ارور میده میگه ادرس معتبر نیست (البته کلابنت هم ارور میده) احساس میکنم باید کد عوض کنم ، تیکه کدی دارید یا میشه یه لینک ارسال کنید ؟

مهدی کرامتی
چهارشنبه 08 مرداد 1399, 19:48 عصر
اول با ابزارهای پورت اسکن و ... بررسی کنید ببینید واقعا جوابی از اون آدرس/پورت دریافت می کنید؟
و آیا پورت فوق در فایروال سیستم مقصد باز شده؟

mahdiidham1383
چهارشنبه 08 مرداد 1399, 21:16 عصر
کدی هست که وضیعت ایپی بررسی میکنم


Ping pi = new Ping();
string ip = "188.212.74.130";
PingReply rep = pi.Send(ip, 2000);
Console.WriteLine(rep.Status.ToString());


وقتی کد رو اجرا میکنم Success چاپ میشه
در مورد اینکه پورت رو سیستم مقصد باز هست یا نه ، باید بگم من هنوز به بخش مقصد نرسیدم ، یعنی سرور ارور میده و اجرا نمیشه در نتیجه من کلانت رو اجرا نمیکنم
فعلا نسخه سرور ارور میده نمی دونم چطور درستش کنم (چندین پورت رو هم بررسی کردم ولی ارور رفع نشد)


راستش احساس میکنم باید از کد خاصی استفاده کنم ، واگرنه این همه برنامه هست که رو ویندوزم اجرا میکنم و تعداد زیادیشون از TCP استفاده میکنند و به مشکل نمی خوردند(فایروال مسدودشون نمی کنه و پورت هاشون بسته نیست) ، مثل بازی های انلاین و شبکه یا پیام رسان ها و ....

mahdiidham1383
پنج شنبه 09 مرداد 1399, 18:53 عصر
یه سوال تو بخش سرور چه ایپی باید بزارم ؟ ایپی شبیه به 188.212.80.118 که ip static هست یا اینکه ایپی داخلی سیستم مثل 127.0.0.1 یا 196.168.1.2 چه ایپی باید در سرور بزنم ؟

مهدی کرامتی
شنبه 11 مرداد 1399, 17:56 عصر
127.0.0.1 و 196.168.1.2 آی پی هایی هستند که در یک شبکه داخلی معنی و کاربرد دارند. آی پی عمومی یک سیستم در اینترنت چیزی شبیه به 188.212.80.118 خواهد بود.

علاوه بر اینها، قبل از اینکه بتوانید یک برنامه مبتنی بر شبکه و اینترنت (که اون هم خودش یک شبکه گسترده تر محسوب میشه) میبایست حداقل یک دانش پایه درباره مفاهیم شبکه و ... داشته باشید. خوبه که یک مطالعه در اون زمینه رو شروع کنید.

_behnam_
دوشنبه 13 مرداد 1399, 21:53 عصر
سلام ، همانظور که جناب کرامتی در اولین جواب فرمودن شما به جز آیپی ثابت ، باید توی مودم تنظیمات Port Forwarding رو انجام بدید.
فرض رو بر این میگیریم که یک شخص میخواد از طریق سیستم خودش به سیستم شما متصل بشه ، و ایپی ثابت شما هم 188.212.74.130 هستش.
وقتی به نرم افزار کلاینت میگه که به 188.212.74.130 متصل شو ، عامیانه بخواین بگیم نرم افزار به صورت دیفالت به مودم شما متصل میشه ، یعنی آیپی 188.212.74.130 آیپی مودم شما میشه. شما باید به مودم بگید که هروقت کسی از بیرون شبکه درخواست اتصال داد. پورت درخواستی رو بررسی کنه و اگر پورت درخواستی جز لیست مد نظر شما بود ، درخواست رو با توجه به پورت به سیستم مورد نظر توی شبکه هدایت کنه.
یعنی اگر شما میخواستید نرم افزار تحت شبکتون روی پورت 1369 کار کنه و ایپی شبکه کامپیوتری که میخواید بهش وصل بشید 192.168.1.100 هست ،باید به قسمت Port Forwarding مودم برید و پورت 1369 رو به192.168.1.100 هدایت کنید


موفق باشید

mahdiidham1383
سه شنبه 14 مرداد 1399, 00:14 صبح
بله صحیح همه ی اینا درست و قابل قبوله، ولی من اصلا سرورم وصل نمیشه یعنی وقتی آیپی ثابت میزنم میگه آدرس وارد شده نامعتبر( همه و همه ی مشکل من مربوط نسخه سرور، من هنوز سراغ کلاینت نرفتم) با توجه به ارور هایی که میومد من حتی احتمالا دادم که شاید نباید در سرور آیپی ثابت رو زد، به جای اون عبارت دیگه رو استفاده کرد که جناب کرامتی گفتن اینطور نیست

_behnam_
سه شنبه 14 مرداد 1399, 00:25 صبح
خوب پس شما باید از طریق یه سیستم دیگه که مجزا از اینترنت خودتون باشه توی مرورگر ایپی خودتون رو بزنید ببینید وارد تنظیمات مودم میشه یا نه ، یا اینکه پینگ ایپی رو بگیرید ببینید پینگ میده یا نه، اگر پینگ نمیداد با پشتیبانی اینترنت خود تماس بگیرید

mahdiidham1383
سه شنبه 14 مرداد 1399, 00:31 صبح
ببینید من از Dynamic dnc استفاده میکنم و ربطی هم به مودم نداره، یه برنامه دسکتاپ داره که باید مادام در حال اجرا باشه تا آیپی ثابت بمونه( اگه برنامه باز باشه و اتصال اینترنتی قطع و وصل هم کنم آیپی تغیر نمی کنه)

ممکن مشکلات فوق به دلیل استفاده از همچین سرویسی باشه؟
البته من با دستور پینگ آیپی بررسی کردم( میگفت انلاینه)ولی تو سیستم دیگر وقتی آیپی میزنم تنظیمات مودم نمی یاد


هرچند تو سیستم خودم میزنم تنظیمات مودم میاد

_behnam_
سه شنبه 14 مرداد 1399, 01:28 صبح
سلام. من تا الان از داینامیک دی ان اس ها استفاده نکردم. اما میدونم که بعضی از خدمات دهنده های اینترنت مثل مخابرات و ایرانسل در صورتی که آیپی ثابت نداشته باشید اجازه نمیدن از بیرون متصل بشید. ولی توی مبین نت تست کردم شده. بهترین کار اینه که شما ایپی ثابت بگیرید و تست کنید. وی پی اس هم میتونید بگیرید ولی‌هزینه آی پی ‌به صرفه تره