zig network
1.0.0
Pequena camada de abstração de rede em torno de TCP e UDP.
select / poll build.zig.zon :
.{
. name = "appname" ,
. version = "0.0.0" ,
. dependencies = .{
. network = .{
. url = "https://github.com/MasterQ32/zig-network/archive/<COMMIT_HASH_HERE>.tar.gz" ,
. hash = "HASH_GOES_HERE" ,
},
},
} (Para adquirir o hash, remova a linha que contém .hash , o compilador informará qual linha colocar de volta)
build.zig :
exe . addModule ( "network" , b . dependency ( "network" , .{}). module ( "network" )); const network = @import ( "network" );
test "Connect to an echo server" {
try network . init ();
defer network . deinit ();
const sock = try network . connectToHost ( std . heap . page_allocator , "tcpbin.com" , 4242 , .tcp );
defer sock . close ();
const msg = "Hi from socket! n " ;
try sock . writer (). writeAll ( msg );
var buf : [ 128 ] u8 = undefined ;
std . debug . print ( "Echo: {}" , .{ buf [0 .. try sock . reader (). readAll ( buf [0 .. msg . len ])]});
}Consulte async.zig para obter um exemplo mais completo de como usar E/S assíncrona para criar um pequeno servidor TCP.
Construa todos os exemplos:
$ zig build examplesConstrua um exemplo específico:
$ zig build sync-examples Para testar um exemplo, por exemplo. echo :
$ ./zig-out/bin/echo 3000em outro terminal
$ nc localhost 3000
hello
hello
how are you
how are you No Windows, as chamadas de função de recebimento e envio são assíncronas e cooperam com o loop de eventos da biblioteca padrão quando io_mode = .evented está definido no arquivo raiz do seu programa.
Outras chamadas (conectar, ouvir, aceitar etc.) estão bloqueando.