Thursday, September 24, 2009

So this is what they're for ...

Being a proud owner of a brand new 4x4 I just had to try it out on a 4x4 course so we ventured out with Carl and Kirsten in their Prado along with my brother and assorted children; lots and lots of them.

We went out quite early to miss the rush and it seems that the 4x4 crowd are not particularly early risers so we had the track to ourselves for most of the morning. The track was dry and dusty for the most part and the order of the day is as follows
  • Arrive at an obstacle and think to oneself "Oh S***" the track really does go over there. For the record we both chickened out on doing this particular obstacle; we couldn't do all the obstacles because then there wouldn't be anything to come back for!


  • Everyone jumps out of the car and walks the obstacle trying to weave an imaginary path through it that will keep most of the wheels on the ground most of the time. Sometimes living in a less than PC environment is very funny.


  • ... so that is what we did. Jordynne, for the record, volunteered!


  • Everyone bar the driver stays out of the car to be able to record the impending spectacular accident.


  • Driver gingerly enters the obstacle and carefully navigates through it by memory because it is completely impossible to see anything less than about 5m ahead of the car due to the bonnet and all the interesting stuff that one must avoid is just within the 5m blackout zone.

  • Very relieved driver completes obstacle and everyone gets back in; the photo opportunity having been missed.


Although the track isn't actually that long it takes quite a bit of time because one is constantly jumping in an out of the car but I find it quite amazing what the cars can accomplish. The video below was done without diff lock which is why I stopped on the hill but it gives quite a good idea what the terrain is like. It's quite a lot of fun.


About two thirds of the way around there is a picnic spot with boma's and braai facilities which I think that we are going to make use of in future. At the picnic area is a sign to beware of the donkeys which aren't really donkeys; I think that they're called zonkey's or debras because they're a cross between a donkey and a zebra.


The whole outing turned out to be a great experience and I think that it is safe to say that everyone is keen to do it again in a couple of months time.

Wednesday, September 02, 2009

SocketListener

What does it do?
SocketListener listens on an IP address and Port for inbound connections. If a connection is received any data received on the connection will be written to a binary logfile called "SocketListener.data" and a record of the connection is written to a text file called "SocketListener.log". In addition to recording inbound data without interpreting it at all; SocketListener can be configured to respond to connections with either an echo of inbound data or a binary data stream taken from a binary file on disk.

Where can I get it?
http://dl.getdropbox.com/u/293834/SocketListener.zip

What is it for?
1. A very simple TCP/IP server which can be very useful when testing the
configuration of firewalls and other network components because you know
that there is something listing on a specific IP and port.
2. Diagnosis of data received when developing interfaces. E.g people in france
say that they sent data in a particular format but your server didn't get it
in the same format and threw it out.
3. Testing of exception handling where the client receives ill formatted or
illegal data that the working server would never normally send back.
4. Any other case where one wants to very quickly have a look at the binary
data received or test the response handling in a client.

Why not use a sniffer? Because of the segmented nature of the networks nowadays one ends up installing sniffers all over the network to monitor what is mostly very simple traffic issues so although it *sort of* sniffs it is not meant to
replace a proper sniffer.

Compiling.
Assuming that you have a jdk installed, run the following in the src directory.
javac SocketListener.java
which will create a SocketListener.class in the same directory.

Running.
If you have compiled it yourself run it on any machine with a jre installed by:
java SocketListener [-p port] [-a IPAddress] [-o filename | -e]

If you are using the precompiled SocketListener.jar:
java -jar SocketListener.jar [-p port] [-a IPAddress] [-o filename | -e]

where parameters are:
[-p port] to listen on a port different from the default of 9021
[-a IPAddress] to listen on an IP address different from "0.0.0.0" i.e. all NIC's
[-o filename | -e] Respond to inbound connections with the contents of "filename" or respond by echoing the inbound data. Default is not to respond at all.