# Checking for Network Connection

**URL:** <https://www.ruby-forum.com/t/checking-for-network-connection/66989>\
**Category:** Ruby\
**Created:** [August 30, 2006, 8:03pm UTC](https://www.ruby-forum.com/t/checking-for-network-connection/66989 "2006-08-30T20:03:52Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![maraby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f08c70/32.png) [@maraby](https://www.ruby-forum.com/u/maraby)\
**Post date:** [August 30, 2006, 8:03pm UTC](https://www.ruby-forum.com/t/checking-for-network-connection/66989/1 "2006-08-30T20:03:52Z")

</div>

OK, so, I quickly googled and was not able to find anything specific,  
but  
what I’m trying to do is find an elegant way to check for a  
network/internet  
connection. (I specifically need the internet, but a network connection  
needs to be preset as well for that… except for dial up? Gah.)

So, from your collection experiences, what do you think is the best,  
most  
elegant way to check for a network connection or an internet connection?  
Should I just ping an address?

And, sorry if I missed something obvious.

M.T.

---

<div class="post-metadata">

**Author:** ![maraby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f08c70/32.png) [@maraby](https://www.ruby-forum.com/u/maraby)\
**Post date:** [August 30, 2006, 8:31pm UTC](https://www.ruby-forum.com/t/checking-for-network-connection/66989/2 "2006-08-30T20:31:57Z")

</div>

On 8/30/06, Matt T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> M.T.

This isn’t easy to do, in the general case. I assume you’re just  
trying to find out if you have a live connection to the WWW (including  
firewall openings and DNS availability), so you could try this:

TCPSocket.new( “[www.rubyforge.org](http://www.rubyforge.org)”, 80)

If it doesn’t throw anything, you’re golden. Make sure to add a  
timeout loop (I usually wait no more than 4 seconds) because depending  
on what is wrong, this call may hang for a long time. Don’t use ping-  
many firewalls block it.

---

<div class="post-metadata">

**Author:** ![maraby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f08c70/32.png) [@maraby](https://www.ruby-forum.com/u/maraby)\
**Post date:** [August 30, 2006, 10:16pm UTC](https://www.ruby-forum.com/t/checking-for-network-connection/66989/3 "2006-08-30T22:16:07Z")

</div>

Thanks… that was also a solution I had thought about, but couldn’t  
really manifest with my limited experience.

I’m not exactly sure how to do a timeout loop… or, rather, what you  
mean. Do you want me to try three times? Or perhaps to say “timeout  
after this amount of time”? Is that part of TCPSocket#new ?

😃

M.T.

---

<div class="post-metadata">

**Author:** ![maraby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f08c70/32.png) [@maraby](https://www.ruby-forum.com/u/maraby)\
**Post date:** [August 30, 2006, 10:28pm UTC](https://www.ruby-forum.com/t/checking-for-network-connection/66989/4 "2006-08-30T22:28:09Z")

</div>

I’m sure there is a timeout option for the socket call, or you could  
just do something like this:

require ‘timeout’  
timeout(10) do

# connect

end

---

<div class="post-metadata">

**Author:** ![maraby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f08c70/32.png) [@maraby](https://www.ruby-forum.com/u/maraby)\
**Post date:** [August 30, 2006, 10:46pm UTC](https://www.ruby-forum.com/t/checking-for-network-connection/66989/5 "2006-08-30T22:46:12Z")

</div>

> I’m sure there is a timeout option for the socket call, or you could  
> just do something like this:
> 
> require ‘timeout’  
> timeout(10) do
> 
> # connect
> 
> end

Sweet! I didn’t know that library existed! You learn something new every  
day.

Thanks guys.

M.T.
