I'm afraid I've run into an immediate problem. As soon as I start up the program, the server starts running, but as soon as I hit 'Connect' on the client, I get the error message 'When casting from a number, the value must be less than infinity' in this section of code....

Code:
    Public Overrides Function Equals(ByVal obj As Object) As Boolean
        With DirectCast(obj, HostInfo)
            Return Me.HostName.Equals(.HostName, StringComparison.CurrentCultureIgnoreCase) AndAlso _
                   Me.Port = .Port
        End With
    End Function
It's on the line 'With DirectCast.......'

One other thing, would it be possible to seperate this into two seperate programs, one for the server and one for the client? I realise it's much easier to test like this but it'll be necessary to split them eventually. Or give me a rough idea which files I'll need for each seperate program?