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 条款许可证。