LiteNetLibPP
1.0.0
C#으로 작성된 유명한 네트워킹 라이브러리 LiteNetLib의 C++ 포트
현재로서는 Windows에서는 MSVC, Linux에서는 GCC를 사용하여 라이브러리를 구축할 수 있습니다. OS X 지원은 향후 릴리스에서 계획되어 있습니다.
예제 프로젝트를 빌드하고 실행하려면 Windows용 Powershell에서 다음 명령을 사용하십시오.
git clone [email protected]:Revan600/LiteNetLibPP.git
cd LiteNetLibPP
mkdir build
cd build
cmake ../
cmake --build .
.Debuglnl_example_server.exe
.Debuglnl_example_client.exe
또는 Linux용 bash에서:
git clone [email protected]:Revan600/LiteNetLibPP.git
cd LiteNetLibPP
mkdir build
cd build
cmake ../
make
./lnl_example_server
./lnl_example_client
그 후에는 localhost:4499(또는 공용 IP)를 통해 테스트 서버에 연결할 수 있습니다.
다음을 제외하고 LiteNetLib의 모든 기능이 구현되었습니다.
1000개의 클라이언트를 사용한 간단한 탁구(서버 벤치마크): 테스트 중에 패킷이나 연결 끊김이 관찰되지 않았습니다(하지만 버그가 있을 것이라고 확신하므로 자유롭게 문제를 작성해 주세요).
다음은 성능 테스트에 사용된 간단한 클라이언트 및 서버 예제입니다. 여기에서 더 많은 예를 찾을 수 있습니다.
# include < lnl/lnl.h >
class my_listener : public lnl ::net_event_listener {
public:
void on_network_receive (std::shared_ptr<lnl::net_peer>& peer, lnl::net_data_reader& reader, uint8_t channelNumber,
lnl::DELIVERY_METHOD deliveryMethod) override {
static lnl::net_data_writer writer;
int32_t value;
if (!reader. try_read (value)) {
printf ( " cannot read value n " );
return ;
}
writer. reset ();
value++;
writer. write (value);
peer-> send (writer, lnl::DELIVERY_METHOD::RELIABLE_ORDERED);
}
void on_connection_request (std::shared_ptr<lnl::net_connection_request>& request) override {
request-> accept ();
}
};
int main () {
lnl::initialize ();
my_listener listener;
lnl::net_manager server (&listener);
server. start ( 4499 );
while (server. is_running ()) {
server. poll_events ();
}
return 0 ;
}
# include < lnl/lnl.h >
class my_listener : public lnl ::net_event_listener {
public:
void on_network_receive (std::shared_ptr<lnl::net_peer>& peer, lnl::net_data_reader& reader, uint8_t channelNumber,
lnl::DELIVERY_METHOD deliveryMethod) override {
static lnl::net_data_writer writer;
int32_t value;
if (!reader. try_read (value)) {
printf ( " cannot read value n " );
return ;
}
writer. reset ();
printf ( " %i n " , value);
value++;
writer. write (value);
peer-> send (writer, lnl::DELIVERY_METHOD::RELIABLE_ORDERED);
}
void on_connection_request (std::shared_ptr<lnl::net_connection_request>& request) override {
request-> accept ();
}
};
int main () {
lnl::initialize ();
my_listener listener;
lnl::net_manager client (&listener);
lnl::net_address address ( " localhost " , 4499 );
lnl::net_data_writer writer;
client. start ();
client. connect (address, writer);
while (client. is_running ()) {
client. poll_events ();
}
return 0 ;
}