View Full Version : سوال: گرفتن فیلد ip destination از پاکت های دریافتی توسط سوکت
venus444
شنبه 25 مهر 1394, 18:54 عصر
سلام دوستان.من میخوام با زبان جاوا یه وی*پی ان سرور پیاده سازی کنم.از کلاینت url میگیرم و بعد با استفاده از HttpURLConnection آدرسی که کلاینت میخواد رو به وب سرورhttp میفرستم و اطلاعاتش رو دریافت میکنم و با سوکت برای کلاینت پس میفرستم.حالا سوالم اینه که وقتی وب سرور http به من جواب میده چطوری بفهمم که destination ip بسته هایی که برای من میفرسته چیه؟به عبارتی از کجا بفهمم که این جواب رو برای کدوم کلاینتم (که قبلا یک ip از شبکه خودم بهش اختصاص دادم) بفرستم؟
MohseN16
یک شنبه 26 مهر 1394, 11:47 صبح
شما اگه بخوای همزمان جواب همه ی client هارو بدید باید برای هر کدومشون ی thread اجرا کنید. حالا که هر thread مخصوص یک client هستش بنابراین مقدار برگشتی که از وب سرور میگیرید باید به همون client بفرستید.
ServerSocket serverSocket = new ServerSocket([port_number]);
while(true){
Socket socket = serverSocket.accept();
new NewClientHandler(socket);
}
حالا NewClientHandler یک Thread هستش و url رو از inputStream اون سوکت که بهش داده شده میگیره و خب جواب برگشتی از وب سرور رو هم به outputStream همون سوکت میفرسته.
venus444
یک شنبه 26 مهر 1394, 12:14 عصر
ممنون بابت جوابتون.مشکل من توی قسمت چند نخی بود که اگر همزمان چند تا وب سرور به *** سرور جواب بفرستن *** سرور از کجا باید متوجه بشه که آدرس مقصد بسته های دریافتیش چیه و هر بسته باید به کدوم کلاینت ارسال بشه.
این مشکل رو با استفاده از IPPacket حل کردم.این کلاس میتونه آدرس مقصد رو از هدر بسته بیرون بکشه.
MohseN16
یک شنبه 26 مهر 1394, 12:20 عصر
جوابی ک من دادم بیشتر شبیه ی proxy ساده بود تا vpn سرور و فک نمیکنم جواب درستی برای سوال شما باشه. باید صبر کنید ببینید نظر دوستان چیه.
مدیریت محترم ممنون میشم اگه اون پست منو پاک کنید.
ahmad.mo74
پنج شنبه 07 آبان 1394, 21:58 عصر
فکر میکنم راه حلتون به سادگیِ استفاده از یه Map باشه
یعنی url رو به عنوان کلید بهش بدید و ip کلاینتارو هم بهش مپ کنید و وقتی محتویات اون url رو دریافت کردید به ip (های) مورد نظر بفرستید.
خیلی نمیشه اینطوری دقیق نظر داد، باید کدتون رو دید...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.