Sabtu, 21 Desember 2013

SFML Network dengan Thread untuk client server [bagian 5]

Setelah kita mengetahui bagaimana hubungan antara object server.cpp dengan client.cpp, sekarang perhatikan code berikut yang terdapat didalam kode server.cpp:
if(Listener.accept(Clients[OpenSlot-1]->Socket) != sf::Socket::Done) {…}
fungsi jika dalam baris tersebut memangil fungsi Listener.accept(dengan parameter nilai kembalian dari Client[OpenSlot-1] object member Socket) Listener itu sendiri adalah object turunan dari sfml-network yaitu sf::tcplistener yang dideklarasikan diawal kode server.cpp:
sf::TcpListener Server::Listener = sf::TcpListener();
mari kita anggap kondisi jika adalah false maka proses yang dijalankan adalah bagian:
else
{      {
      std::wstringstream ss; ss << L"{GDClient connected} on port {YD" << OpenSlot+Port << L"}.";
      writeToLog(ss.str());
      }
      Clients[OpenSlot-1]->Dead = false;
      Clients[OpenSlot-1]->listenThread = new sf::Thread(&Client::listen, Clients.at(OpenSlot-1));
      Clients[OpenSlot-1]->listenThread->launch();
}
Proses akan menulis dilayar tentang std::wstringstream ss; ss << L"{GDClient connected} on port {YD" << OpenSlot+Port << L"}."; writeToLog(ss.str()); kemudian memberi nilai false kepada Client[OpenSlot-1] object member:Dead, kemudian membuka lagi thread baru untuk koneksi client berikutnya:
Clients[OpenSlot-1]->listenThread = new sf::Thread(&Client::listen, Clients.at(OpenSlot-1));
Clients[OpenSlot-1]->listenThread->launch();

Nah dengan demikian setiap client akan terhubung kepada server pada port mereka masing-masing dimana setiap koneksi client tersebut akan berada dalam thread yang berbeda-beda.

Tidak ada komentar:

Posting Komentar