#include <SFML/Network.hpp>
#include <iostream>
void
runTcpServer(unsigned
short
port)
{
sf::TcpListener listener;
if
(listener.listen(port) != sf::Socket::Done)
return
;
std::cout <<
"Server is listening to port "
<< port <<
", waiting for connections... "
<< std::endl;
sf::TcpSocket socket;
if
(listener.accept(socket) != sf::Socket::Done)
return
;
std::cout <<
"Client connected: "
<< socket.getRemoteAddress() << std::endl;
const
char
out[] =
"Hi, I'm the server"
;
if
(socket.send(out,
sizeof
(out)) != sf::Socket::Done)
return
;
std::cout <<
"Message sent to the client: \""
<< out <<
"\""
<< std::endl;
char
in[128];
std::
size_t
received;
if
(socket.receive(in,
sizeof
(in), received) != sf::Socket::Done)
return
;
std::cout <<
"Answer received from the client: \""
<< in <<
"\""
<< std::endl;
}
void
runTcpClient(unsigned
short
port)
{
sf::IpAddress server;
do
{
std::cout <<
"Type the address or name of the server to connect to: "
;
std::cin >> server;
}
while
(server == sf::IpAddress::None);
sf::TcpSocket socket;
if
(socket.connect(server, port) != sf::Socket::Done)
return
;
std::cout <<
"Connected to server "
<< server << std::endl;
char
in[128];
std::
size_t
received;
if
(socket.receive(in,
sizeof
(in), received) != sf::Socket::Done)
return
;
std::cout <<
"Message received from the server: \""
<< in <<
"\""
<< std::endl;
const
char
out[] =
"Hi, I'm a client"
;
if
(socket.send(out,
sizeof
(out)) != sf::Socket::Done)
return
;
std::cout <<
"Message sent to the server: \""
<< out <<
"\""
<< std::endl;
}