Implementing the client

With the class definition covered, it's time to actually make it do something, starting with the constructor and destructor:

Client::Client():m_listenThread(&Client::Listen, this){}
Client::~Client(){ m_socket.unbind(); }

In the client constructor's initializer list, we bind the listening thread to the Listen method of this class. Threads do not have a default empty constructor, which is why this is necessary. The destructor is simply used to unbind the socket we're using.

Now, let's take a stab at implementing the connection protocol:

bool Client::Connect(){ if (m_connected){ return false; } m_socket.bind(sf::Socket::AnyPort); sf::Packet p; StampPacket(PacketType::Connect, p); p << m_playerName; if (m_socket.send(p, m_serverIp, ...

Get SFML Game Development By Example now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.