netcode
Stable Release
netcode是建立在 UDP 之上的安全客戶端/伺服器協定。
它旨在供即時多人遊戲使用,這些遊戲需要面向連接的協議,但沒有 TCP 的隊頭阻塞。
網路程式碼具有以下特點:
網路程式碼穩定並且可以投入生產。
首先產生隨機的 32 位元組私鑰。不要與任何人分享您的私鑰。
特別是,不要將您的私鑰包含在客戶端可執行檔中!
這是一個測試私鑰:
static uint8_t private_key [ NETCODE_KEY_BYTES ] = { 0x60 , 0x6a , 0xbe , 0x6e , 0xc9 , 0x19 , 0x10 , 0xea ,
0x9a , 0x65 , 0x62 , 0xf6 , 0x6f , 0x2b , 0x30 , 0xe4 ,
0x43 , 0x71 , 0xd6 , 0x2c , 0xd1 , 0x99 , 0x27 , 0x26 ,
0x6b , 0x3c , 0x60 , 0xf4 , 0xb7 , 0x15 , 0xab , 0xa1 };
使用私鑰創建伺服器:
char * server_address = "127.0.0.1:40000" ;
struct netcode_server_config_t server_config ;
netcode_default_server_config ( & server_config );
memcpy ( & server_config . private_key , private_key , NETCODE_KEY_BYTES );
struct netcode_server_t * server = netcode_server_create ( server_address , & server_config , time );
if ( ! server )
{
printf ( "error: failed to create servern" );
return 1 ;
}
然後使用您想要的客戶端插槽數量啟動伺服器:
netcode_server_start ( server , 16 );
若要連接用戶端,您的用戶端應使用傳回連線令牌的後端 REST API。
使用連線令牌可以保護您的伺服器,以便只有獲得您後端授權的用戶端才能連線。
netcode_client_connect ( client , connect_token );
一旦客戶端連接到伺服器,客戶端就會被分配一個客戶端索引,並且可以與伺服器交換加密和簽署的資料包。
有關更多詳細信息,請參閱 client.c 和 server.c
此儲存庫保存了 C 語言的網路程式碼實作。
其他網路代碼實作包括:
如果您想建立自己的 netcode 實現,請閱讀 netcode 1.02 標準。
這些人太棒了:
感謝您對網絡代碼的貢獻!
本庫的作者是 Glenn Fiedler。
同一作者的其他開源程式庫包括:reliable、serialize 和 yojimbo。
如果您發現該軟體有用,請考慮贊助它。謝謝!
BSD 3 條款許可證。