Java How can I use Java to control external programs based on my network latency?

AI Thread Summary
A user seeks to create a program that detects internet latency and opens another program if latency is low, with a loop to check every half hour. They inquire about using the command "ping www.google.co.uk" to measure latency. A response clarifies that Java cannot directly execute a ping due to ICMP packet restrictions but can call the ping command through the command line. The user shares their working Java code, which executes the ping command, reads the output to assess latency, and opens a specified program if the latency is deemed low. The code includes logic to parse the ping output and determine if the latency is acceptable based on specific numeric thresholds. The user acknowledges that the code may have some flaws but confirms it functions correctly in their development environment.
sanitykey
Messages
93
Reaction score
0
Hi, i would like to make a program which can detect my latency, if it's low then it would open a program and if it's high it'd do nothing, i'd also like to loop it so it tries every half an hour or so. Would this be possible? If so any advice on how to start I'm a bit rusty and have only tried simple programs before (although i suppose this probably is simple :-p ).

Could it use "ping www.google.co.uk" in cmd to get my latency?

Thanks
Richy
 
Technology news on Phys.org
You can't do a ping with Java directly because it can't send ICMP packets, but you can have Java call ping.exe and read the standard output, for example. I've done something similar with c++.
 
Thanks -Job- i managed to make it, my code is a bit messy but here it is if anyone is interested =)

import java.io.IOException;
import java.io.InputStream;

public class PingDownload {

public PingDownload() {}

public static void main(String[] args) {

int ReadCounter = 0;
int NumTotal = 0;
int LoopParameter = 0;

try {

String command = "ping www.google.co.uk";
String command2 = "cmd /c start C:\\ProgramShortcut";

while(LoopParameter != 1) {

Process child = Runtime.getRuntime().exec(command);
//Executes the command string
InputStream in = child.getInputStream();

while (ReadCounter != 169) {

int CharA = in.read();
//Reads the first character and stores its ASCII value
int CharB = in.read();
//Reads the second character and stores its ASCII value
int CharC = in.read();
//Reads the third character and stores its ASCII value

if(47<CharA && CharA<58 && ReadCounter>150) NumTotal = NumTotal + CharA;
if(47<CharB && CharB<58 && ReadCounter>150) NumTotal = NumTotal + CharB;
if(47<CharC && CharC<58 && ReadCounter>150) NumTotal = NumTotal + CharC;

//If any of the characters are numbers and the counter is near the end
//(above 150)
//add them to NumTotal this ensures only the last 3 numbers from the ping
//command are taken which are the maximum minimum and average pings
//detected


ReadCounter++; //Increment the counter

}

//When my ping is high all three numbers consist of three digits and the
//lowest
//value these can take is 0 so i know if the total is below 48x9 = 432 my ping
//is low

if(NumTotal < 432) {

child = Runtime.getRuntime().exec(command2);
LoopParameter = 1; //If the program is opened end the loop
}

}
}

catch (IOException e) {}
}
}

*cough* There might be bits wrong with it other than the way I've went about it but it worked in Netbeans and compiled ok.
 
Last edited:
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...
Back
Top