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 ;
}