ده جزء بسيط من ملفات سيرفر سيلك رود اصليه وبرامجه SR_gameserver
موضوع اسهل ما يمكن
#include <iostream>
#include <boost/asio.hpp>
using boost::asio::ip::tcp;
class GameServer {
public:
GameServer(boost::asio::io_context& io_context, short port)
: acceptor_(io_context, tcp::endpoint(tcp::v4(), port)) {
start_accept();
}
private:
void start_accept() {
tcp::socket* new_socket = new tcp::socket(acceptor_.get_io_context());
acceptor_.async_accept(*new_socket,
[this, new_socket](const boost::system::error_code& error) {
if (!error) {
std::cout << "New player connected!" << std::endl;
start_read(new_socket);
}
start_accept();
});
}
void start_read(tcp::socket* socket) {
char* data = new char[1024];
socket->async_read_some(boost::asio::buffer(data, 1024),
[this, socket, data](const boost::system::error_code& error, size_t length) {
if (!error) {
std::cout << "Received message: " << std::string(data, length) << std::endl;
start_read(socket);
}
delete[] data;
});
}
tcp::acceptor acceptor_;
};
int main() {
try {
boost::asio::io_context io_context;
GameServer server(io_context, 32002);
io_context.run();
}
catch (std::exception& e) {
std::cerr << "Exception: " << e.what() << std::endl;
}
return 0;
}