Writing my ErrorLogger class which logs error really didn’t take much time at all, and considering it’s already written I’m not sure if I should destroy it for a library now. If it wasn’t done then I would consider it. For now I’ll leave it in unless I get overwhelming feedback for a third-party library instead (2 to 1 is not overwhelming). I will do some tests for ping length.
After running 100 pings on both languages with the same desired website and the same programs open:
The website for both is github.com.
C# average ping length: 631 milliseconds
Java average ping length: 2112 milliseconds
They aren’t quite the same. But, what I’ve found from cmd is that GitHub is bad with pinging. Google had a maximum length of 47ms and GitHub had two requests time out. Obviously I shouldn’t use GitHub as my default site. But Google doesn’t work with Java’s pinging method! I found an alternate method for checking internet that isn’t pinging that I will try and see how it works. It should work with Google. I can either use that method or try to use the terminal to check internet: I could execute “ping -n 1 www.google.com” on Windows and “ping -c 1 www.google.com” on Mac and Linux. The problem there is that I could detect OS but then it would only work for Windows, Mac, and Unix environments, but those are just about all that are used today. I’ll let that be my backup plan, first I’ll try this alternate method.
The average ping-like method length for google.com with this alternate method (illustrated at http://stackoverflow.com/questions/1139547/detect-internet-connection-using-java with the final code block) is 176 milliseconds! That’s great! Now checking internet will be so much better! I don’t need to fall back to executing terminal work at all. I will add it as a “fall back” method though, so if the main method returns that no internet is detected it will test with the terminal and if the terminal agrees it will quit the download.
I implemented both, but the only problem is that checking for internet in each download round really slows down download speed. I’ll look into possible solutions to this where I won’t have to check internet every download round. Ugh I tested if stopping the internet connection in the middle of the download caused the download to stop but it still freezes because it’s the transferFrom() method that is running at the time the internet stops. 
I put in a working method to stop if internet is lost. It’s the ugliest code ever though (mainly due to my inexperience with threads) so I really need to fix it. I’m not sure if it’s better for me to called a thread.stop() method or System.exit(1). Probably thread.stop().