Listen 서버는 게임 클라이언트가 직접 서버 역할도 함께 수행하는 방식. 즉, 플레이어 중 한 명이 서버가 되어 다른 플레이어들의 연결을 관리하고 게임을 동기화하는 역할.
특징
호스트 플레이어가 서버를 운영하면서 동시에 게임을 플레이함.
서버와 클라이언트가 동일한 프로세스에서 실행됨.
호스트가 게임을 종료하면 서버도 종료됨.
상대적으로 구현이 쉽고 빠르게 개발할 수 있음.
작은 규모의 게임에서 많이 사용됨.
장점
✅ 서버 비용이 들지 않음 (서버를 별도로 운영할 필요 없음)
✅ 빠른 테스트 및 프로토타이핑에 유용함
✅ 친구들끼리 간단히 멀티플레이 게임을 즐길 때 유용함
단점
❌ 호스트의 인터넷 환경이 게임 전체에 영향을 미침 (핑 문제)
❌ 호스트가 나가면 게임이 종료됨 (재접속 불가능)
❌ 해킹 및 치트의 위험이 높음 (클라이언트가 서버 권한을 가지므로)
Dedicated 서버는 오직 서버 역할만 수행하는 별도의 프로그램(또는 기기)에서 실행되는 서버. 즉, 게임에 직접 참여하지 않고, 클라이언트들 간의 연결과 게임 진행을 관리하는 역할.
특징
서버는 독립적으로 실행되며, 클라이언트와 분리됨.
특정한 머신(컴퓨터 또는 클라우드 서버)에서 실행됨.
일반적으로 고성능 서버를 사용하여 더 많은 플레이어를 수용할 수 있음.
MMORPG, FPS, MOBA 같은 대규모 멀티플레이 게임에서 사용됨.
장점
✅ 안정적인 연결과 낮은 지연시간 (서버가 좋은 네트워크 환경에서 실행됨)
✅ 서버가 항상 실행 중이므로 플레이어가 자유롭게 접속/종료 가능
✅ 보안이 뛰어나며, 해킹 및 치트 대응이 상대적으로 쉬움
✅ 대규모 플레이어 동시 접속을 원활하게 처리할 수 있음
단점
❌ 서버 유지 비용이 발생함 (클라우드 또는 물리 서버 운영 필요)
❌ 서버 개발이 Listen 서버보다 복잡함
❌ 초기 설정과 유지보수가 필요함

#include <iostream>
#include <boost/asio.hpp>
using namespace boost::asio;
using ip::tcp;
int main() {
io_service ioService;
tcp::acceptor acceptor(ioService, tcp::endpoint(tcp::v4(), 12345));
tcp::socket socket(ioService);
std::cout << "Listen 서버 시작! 클라이언트 대기 중...\n";
acceptor.accept(socket);
std::string message = "안녕하세요! Listen 서버입니다.";
boost::system::error_code error;
write(socket, buffer(message), error);
if (!error) {
std::cout << "메시지를 성공적으로 보냈습니다.\n";
} else {
std::cout << "에러 발생: " << error.message() << "\n";
}
return 0;
}
#include <iostream>
#include <boost/asio.hpp>
using namespace boost::asio;
using ip::tcp;
void handle_client(tcp::socket socket) {
std::string message = "Dedicated 서버에 연결되었습니다!";
boost::system::error_code error;
write(socket, buffer(message), error);
}
int main() {
io_service ioService;
tcp::acceptor acceptor(ioService, tcp::endpoint(tcp::v4(), 12345));
std::cout << "Dedicated 서버 실행 중...\n";
while (true) {
tcp::socket socket(ioService);
acceptor.accept(socket);
handle_client(std::move(socket));
}
return 0;
}
Listen 서버: 플레이어 중 한 명이 서버 역할을 수행. 저비용, 빠른 개발 가능하지만 안정성이 낮음.
Dedicated 서버: 별도의 서버가 운영되며, 높은 안정성과 보안을 제공하지만 비용이 발생함.
소규모 게임(친구들과 하는 게임)에서는 Listen 서버가 적합하며, 대규모 온라인 게임에서는 Dedicated 서버가 필요함.