Run client under debugger and detect the line where it hangs. Report it properly.
If it is difficult to do, log all important step using System log using the class
System.Diagnostics.EventLog
.
Where are your threads?
Don't even play with the idea of making networking application without threading. All networking should be in a separate threads: one on clients, at least two on server (one to accept new connections, one for communications).
Please see my design sketch for this in my past Answers:
Multple clients from same port Number[
^].
Here you will find a collection of Answer on threading, a lot of useful details:
How to get a keydown event to operate on a different thread in vb.net[
^].
For more convenient use of logging, use this:
How to create event log under a folder[
^].
You can debug client and server part of the same machine (with more then one client, if you want), the logging in the same machine will put all logs together, so you will see exact sequence of all steps, which is very convenient.
A side note: use Microsoft naming conventions. Interface must be named something line "IChatClient", not "Class1". Never leave any of the auto-generated names, especially like "Form1", "Form2" or "Label1", rename then and give semantic names. Don't hard-code anything with immediate constant as you do, especially strings (for report of a problem at CodeProject it is acceptable, used for brevity).
Are you sure this is client interface? If "AddUser" (again, follow naming conventions!), maybe, this is a server's?
—SA