Zaadaptowane z tutoriala, ze sprawdzaniem błędów, na wątkach:
#include <SFML/Network.hpp>
#include <string>
#include <thread>
#include <chrono>
#include <iostream>
using namespace std::chrono_literals;
struct Dane {
int x, y;
};
void sendThread()
{
sf::TcpSocket socket;
sf::Socket::Status status = socket.connect("127.0.0.1", 53000);
if (status != sf::Socket::Done) {
std::cout << "socket error" << std::endl;
std::this_thread::sleep_for(500ms);
return;
}
Dane dane = { 123, 456 };
while(true) {
if (socket.send(&dane, sizeof(dane)) != sf::Socket::Done) {
std::cout << "send error" << std::endl;
std::this_thread::sleep_for(500ms);
return;
}
std::this_thread::sleep_for(50ms);
}
}
void receiveThread()
{
sf::TcpListener listener;
if (listener.listen(53000) != sf::Socket::Done) {
std::cout << "listen error" << std::endl;
std::this_thread::sleep_for(500ms);
return;
}
sf::TcpSocket socket;
if (listener.accept(socket) != sf::Socket::Done) {
std::cout << "accept error" << std::endl;
std::this_thread::sleep_for(500ms);
return;
}
while (true) {
Dane dane;
std::size_t received;
if (socket.receive(&dane, sizeof(dane), received) != sf::Socket::Done) {
std::cout << "receive error" << std::endl;
std::this_thread::sleep_for(500ms);
return;
}
std::cout << dane.x << " " << dane.y << std::endl;
std::this_thread::sleep_for(50ms);
}
}
int main()
{
std::thread thread(sendThread);
//std::thread thread(receiveThread);
thread.join();
}