This application is multi-threaded, isn't it? In that case, only one thread can do operations on UI - the UI thread. If you don't manually create new threads, then you don't have to worry about this. Once you start a new thread yourself and you want it to do something UI related (like updating text of serverStatus text-field), you have to do it on UI thread. Not obeying this rule will result in an exception.
Handlers are used as a way of passing messages between threads. In this case, the UI thread has a handler, which was sent as a parameter when server-thread was created. Every time it needs to update UI, it posts a message to the UI thread, which periodically checks for new messages and executes Runnables attached to them.
Here's another link (with example) that might help you understand it a bit better:
http://developer.android.com/guide/appendix/faq/commontasks.html#threading