Use a TCP connection, your going to be needing all your data, and in order.
Split your clients up into rooms, only send chat and card data to users in that specific room, theres no need for billy in room b to know what move johny in room a made or said.
As a client sends in data you want to check the integrity of it, as in, could he really make this move? Then if so, send the data to all the clients in the room.
You need to keep your packets as small as possible, so dont send strings, send bytes. Givin that, I don't know what kind of card game your making, but lets say each player lays down 5 cards, which is then sent out to all the clients in the room, well if you used a byte for each one of those, your packets would be about 6 Bytes. First Byte = Packet ID, followed by 5 cards.
Anywho.. its like 4:27 AM .. if you need more help just ask

i'm going to bed.