ورود

View Full Version : سوال: ارسال ایمیل رمانی که ای پی عوض میشه!



pro_mvb
پنج شنبه 05 بهمن 1391, 18:25 عصر
سلام
من میخوام یه برنامه ای بنویسم که وقتی برنامه شروع به کار کرد هر زمان که ای پی سیستم عوض شد ای پی جدید رو بگیره و برام از طریق ایمل بفرسته!

من خودم یه برنامه نوشتم که هر 2 دقیقه ای پی رو برام میل میکنه اما اینجوری اینباکسم منفجر میشه و کلا کار قشنگی نیست.
یه مقدار توی الگوریتم پیاده سازیش موندم چیکار کنم.
ممنون:لبخند:

spiderman200700
پنج شنبه 05 بهمن 1391, 21:08 عصر
سلام.
اگر در سمت سرور میخوای هر وقت IP کلاینت عوض شد واست میلش کنه، این کار شدنی نیست. چون وقتی کلاینت IPش عوض بشه ارتباطش با سرور قطع میشه. و سرور نمیتونه IP جدید کلاینت رو داشته باشه که بخواد میلش کنه.
ولی اگه بخوای در سمت کلایت و با استفاده از سیستم کلاینت، IP ارسال بشه ، مشکلی سر چک کردن و ارسالش نیست. با یه Thread ساده میشه هر 1 ثانیه چک کرد که آیا IP عوض شده ، یا نه. اگر عوض شده بود واست میلش کنه.
مشکلی که هست اینه که ، با روش های معمول فقط میشه IP سیستم در داخل شبکه داخلی رو به دست آورد ، نه Valid IP ای رو که باهاش به اینترنت کانکت هستیم.
این یعنی Valid IP مربوط به مودم هست و مودم هست که اینترنت رو برای شبکه ی داخلی ای که خودش سرورش هست Share میکنه. و ما هم داخل این شبکه داخلی که یه IP غیر معتبر داریم از اون اطلاعات Share شده استفاده میکنیم.
پس نمیتونیم IP معتبر رو توی هیچ زبان برنامه نویسی ای به روش معمول به دست بیاریم.

اگه فکر میکنی که مشکلت به دست آوردن IP معتبر نیست ، پس میتونی با همون روشی که گفتم(درست کردن Thread ) هر یک ثانیه یک بار IP رو با آخرین IP ثبت شده چک کنی. اگه عوض شده بود ارسالش کنی.
ولی اگه مشکلت بدست آوردن IP معتبر هست، باید یه سری کارا انجام بدی که مفصله گفتنش.
موفق باشی

pro_mvb
پنج شنبه 05 بهمن 1391, 23:35 عصر
اگه ای پی ولیدشو بخوایم باید لابد وصل بشیم به یه سایت و بعد محتوای اونو بخونیمو این داستانا؟؟
یا راحه دیگه ای هست؟

spiderman200700
جمعه 06 بهمن 1391, 02:23 صبح
آره.
باید به یه سایت وصل بشی. راه دیگه ای هم نیست.
میتونی یه کد با PHP بزنی توی یه فایل PHP بریزی و مثلا بذاری رو persiangig .
کار این فایل اینه که هر کی بهش وصل شد فقط IPشو واسش echo کنه. همین. باید به آدرس این فایل وصل بشی و IP رو ازش بگیری.
در حد دو سه خط کد میشه فایل PHPیت. که اگه بلد باشی که هیچ ، اگرم بلد نباشی با یه سرچ کوچیک میتونی کدشو پیدا کنی.

Hybrid
جمعه 06 بهمن 1391, 09:17 صبح
سلام ، بجز راهی که دوست عزیزمون گفتن راه دیگه ای هم وجود داره

بعضی از سایت ها وجود دارن که این کار رو واستون انجام میدن ،

http://www.findmyipaddress.com/

شما کافیه صفحه بالا رو دانلود کنی و سپس IP خودتون رو ازش استخراج کنید

pro_mvb
جمعه 06 بهمن 1391, 10:04 صبح
خوب فقط یه مسئله هست ! اینکه اینجوری صفحه مورد نظر ذارتی باز میشه روی صفحه طرف! و این جالب نیست! راهی هست که در بکگراند این قضیه اتفاق بیافته؟ (یعنی اکسپلورر دیگه باز نشه)!

spiderman200700
جمعه 06 بهمن 1391, 11:44 صبح
نه Browser باز نمیشه. اصلا. چرا باید باز بشه.
باید با استفاده از کلاس HttpURLConnection اطلاعات رو از صفحه مورد نظر بگیری.
خیلی سادس. اینم یه متد برای این کار. کافیه آدرس صفحه وبت رو بدی و محتواشو توی یه String تحویل بگیری:
public String getURLData(String url) {
try {
String line = "";
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String tempLine;
while ((tempLine = br.readLine()) != null) {
line += "\n" + tempLine;
}
br.close();
return line.trim();
} catch (IOException ex) {
return null;
}
}

که صفحه ای که تو میخوای اطلاعاتشو بگیری،نتیجه ی همون فایل PHP ایه که خودت ایجاد کردی و فقط یه IP بهت میده.ولی میتونی از این متد استفاده کنی و کل محتوای HTML یه صفحه رو بگیری و تو فایل ذخیره کنی. همون کاری که Browser ها موقه ذخیره کردن صفحه انجام میدن.

pro_mvb
جمعه 06 بهمن 1391, 15:46 عصر
مرسی بابت کدی که دادی . اما خط اول رو نمیفهم که url connection هست

http://javalearning.xzn.ir/mostafa/

الگوریتم برنامه باید اینجوری باشه که :
وقتی برنامه اجرا میشه شروع کنه وصل بشه به این سایت مشکل اول اینه که ممکن طرف وصل نشه به اینترنت. خوب اینجا چطوری هندلش کنیم؟
من فکرم اینه که یه try catch بذاریم بعد اگه در قسمت try ناکام موند برای وصل شدن ، در قسمت catch دوباره خود متد رو صدا بزنیم که شروع به کار کنه! (این کار درسته؟ آیا باعث overhead در برنامه و رم نمیشه ؟ )

Hybrid
جمعه 06 بهمن 1391, 20:10 عصر
وقتی برنامه اجرا میشه شروع کنه وصل بشه به این سایت مشکل اول اینه که ممکن طرف وصل نشه به اینترنت. خوب اینجا چطوری هندلش کنیم؟

شما یک تابع بنویسید که اینکارو واستون انجام بده ، کار تابع اینه که چک میکنه آیا کامپیوتر به اینترنت دسترسی داره یا نه . اگه داشت اون صفحه رو دانلود میکنید و IP خودتون رو ازش استخراج میکنید . ولی اگه وصل نباشه یک پیغام به کاربر نشون میدید مبنی بر اینکه به اینترنت دسترسی ندارید.

pro_mvb
جمعه 06 بهمن 1391, 21:13 عصر
شما یک تابع بنویسید که اینکارو واستون انجام بده ، کار تابع اینه که چک میکنه آیا کامپیوتر به اینترنت دسترسی داره یا نه . اگه داشت اون صفحه رو دانلود میکنید و IP خودتون رو ازش استخراج میکنید . ولی اگه وصل نباشه یک پیغام به کاربر نشون میدید مبنی بر اینکه به اینترنت دسترسی ندارید.

2 تا مسئله هست:
1- برنامه به صورتیه که کاربری وجود نداره یعنی برنامه پشت پرده باید خودش کاراشو بکنه و خبری از نشان دادن پیغام و اینا نیست!
2- نکته ی مهم تر اینه که سرور من پشت یک مودم قرار داره که ای پی رو شیر میکنه به چند نفر (ای پی اینترنتو) که هرکدام از اونا(منظور سرورها) یه ای پی اینولید دارن مثل 192.168.1.12 من حتی اگه ای پی مودم رو داشته باشم(یعنی ای پی مودمی که سرور از طریقش داره از اینترنت استفاده میکنه) ، چطوری میتونم به سرور مربوطم که ای پی اینولید داره و روی پورتش داره listen میکنه وصل بشم؟