View Full Version : بررسی اتصال به اینترنت
mahdi68
پنج شنبه 13 اسفند 1388, 20:35 عصر
سلام
آیا در جاوا این امکان هست که بررسی کنیم ببینیم که کامپیوتر به اینترنت وصل هست یا نه ؟؟؟
آیا امکان پینگ کردن به یک سایت وجود داره ؟؟؟ من یک سورس کد پیدا کردم که cmd فراخوانی میکرد و ... که ازش سردرنیاوردم !!! ممنون میشم اگه کسی تو این زمینه راهنماییم کنه
متشکرم
ermia2008
جمعه 14 اسفند 1388, 01:23 صبح
سلام
آیا در جاوا این امکان هست که بررسی کنیم ببینیم که کامپیوتر به اینترنت وصل هست یا نه ؟؟؟
آیا امکان پینگ کردن به یک سایت وجود داره ؟؟؟ من یک سورس کد پیدا کردم که cmd فراخوانی میکرد و ... که ازش سردرنیاوردم !!! ممنون میشم اگه کسی تو این زمینه راهنماییم کنه
متشکرم
سلام
این دستور رو امتحان کن. احتمالا جواب بده ولی مطمئن نیستم. یه تستش کن نتیجه رو بگو:
String host = "سايت ip"
int timeOut = 3000;
boolean status = InetAddress.getByName(host).isReachable(timeOut)
ip یه سایت رو میگیره و اگه جواب بده True بر میگردونه.
mahdi68
جمعه 14 اسفند 1388, 10:20 صبح
سلام
من با استفاده از راهنمایی شما قطعه کد زیر نوشتم ولی جواب نداد یعنی به اینترنت وصل هستم ولی مقدار false برمیگردونه !!! و ip مورد نظر دستی میتونم ping کنم !!!
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ping;
import java.io.IOException;
import java.net.InetAddress;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author mahdi
*/
public class Main {
/**
* @param args the command line arguments
*/
public static boolean status;
public static void main(String[] args) {
String host = "209.85.229.147";
int timeOut = 3000;
try {
status = InetAddress.getByName(host).isReachable(timeOut);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.S EVERE, null, ex);
}
if (status) {
System.out.println("Online");
} else {
System.out.println("Offline");
}
}
}
saeedIRHA
جمعه 14 اسفند 1388, 17:02 عصر
سلام
من با استفاده از راهنمایی شما قطعه کد زیر نوشتم ولی جواب نداد یعنی به اینترنت وصل هستم ولی مقدار false برمیگردونه !!! و ip مورد نظر دستی میتونم ping کنم !!!
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ping;
import java.io.IOException;
import java.net.InetAddress;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author mahdi
*/
public class Main {
/**
* @param args the command line arguments
*/
public static boolean status;
public static void main(String[] args) {
String host = "209.85.229.147";
int timeOut = 3000;
try {
status = InetAddress.getByName(host).isReachable(timeOut);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.S EVERE, null, ex);
}
if (status) {
System.out.println("Online");
} else {
System.out.println("Offline");
}
}
}
با کاربر root امتحانش کن در لینوکس باید کار کنه;
استفاده از"ICMP ECHO REQUESTs" فقط برای کاربران با دست رسی بالا هست مثل root در لینوکس:
خط های آخر این صفحه رو ببین:
http://www.rgagnon.com/javadetails/java-0093.html
isReachable() will use ICMP ECHO REQUESTs if the privilege can be obtained, otherwise it will try to establish a TCP connection on port 7 (Echo) of the destination host. But most Internet sites have disabled the service or blocked the requests (except some university web sites like the example above) .
اینم نمونهٔ اجرا شدن برنامه:
import java.io.*;
import java.net.*;
public class ReachableTest {
public static void main(String args[]) {
String server = args[0];
try {
InetAddress address = InetAddress.getByName(server);
System.out.println("Name: " + address.getHostName());
System.out.println("Addr: " + address.getHostAddress());
System.out.println("Reach: " + address.isReachable(3000));
}
catch (UnknownHostException e) {
System.err.println("Unable to lookup " + server);
}
catch (IOException e) {
System.err.println("Unable to reach " + server);
}
}
}
With root Access
root@base:/home/saeed/Temp# java ReachableTest www.google.com
Name: www.google.com
Addr: 216.239.59.103
Reach: true
Normal user
saeed@base:~/Temp$ java ReachableTest www.google.com
Name: www.google.com
Addr: 216.239.59.105
Reach: false
mahdi68
شنبه 15 اسفند 1388, 18:19 عصر
سلام
من طبق گفته شما با کاربری root امتحان کردم و درست کار کرد ولی من میخوام با user معمولی هم این کار بکنم آیا امکان همچین چیزی هست ؟؟؟ یا یک روش دیگه و ...
آیا تو ویندوز هم کاربر root داریم ؟؟؟ باید با administrator لاگین کنم درسته ؟؟؟
saeedIRHA
شنبه 15 اسفند 1388, 21:26 عصر
سلام
من طبق گفته شما با کاربری root امتحان کردم و درست کار کرد ولی من میخوام با user معمولی هم این کار بکنم آیا امکان همچین چیزی هست ؟؟؟ یا یک روش دیگه و ...
آیا تو ویندوز هم کاربر root داریم ؟؟؟ باید با administrator لاگین کنم درسته ؟؟؟
در Windows نمیتونی چنین کاری رو بکنی و باید از همون ping خود ویندوز استفاده کنی
در لینوکس هم فقط کاربر root اجازه استفاده از"ICMP ECHO REQUESTs " های system رو داره
اگر میخواهی کاربران دیگه هم بتونن ping کنن باید از همون فرمان ping خود سیستم استفاده کنی
java_nith
سه شنبه 18 اسفند 1388, 04:15 صبح
از طریقه socket که میشه؟
شما به یک سرور خودتو وصل کنی، اگه جواب داد یعنی به شبکه وصل است اگه هم نه که نیست
حالا مشکل اینجاست که شما باید یه سرور خودت درست کنی همیشه هم روشن باشه
ولی سرور هائی هستن که این کارو انجام میدم
یک سرور هست که همیشه روشنه و ساعت رو return میکنه
این کودی که من نوشتم ساعت رو بر میگردنه
اگه این String که پر بشه یعنی اینترنت هست، اگه هم که نه یعنی نیست
package LabOppgaver;
import java.io.*;
import java.net.*;
public class Oppgave2 {
public static void main(String [] args){
try{
Socket nyKlient = new Socket("132.163.4.101", 13);
BufferedReader input = new BufferedReader(new InputStreamReader(
nyKlient.getInputStream()));
String melding = input.readLine();
while(melding != null){
System.out.print(melding);
melding = input.readLine();
}
}catch(IOException ex){
System.out.println("IOException:");
System.out.println(ex.getMessage());
}
}
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.