extract method broadcast()
display users' login, logout info
add gtk window
display received message in textview, send message defined in textentry
client side:
add framing mechanism to tell where a message starts and the next begins
add users list(gtkTreeView)
add and remove user from users list when some user log in or log out

server side:
send AddUserMessage and RemoveUserMessage when user log in or log out
use GtkBuilder to load UI xml designed by Glade
load treeview from glade UI file
draw player's graphic unit on canvas
redraw canvas every 50 ms
append framing splitter when sending message
update self position to server, then server will broadcast the position to all users
use direction to update position
set two modes for broadcasting: "all", "others"
save other users' directions
only update direction and position when users' direction changed
calculate other users' position by direction
extract class ClientWindow
extract Sprite class
extract method updateUserPositionToServer()