Petite couche d'abstraction réseau autour de TCP et 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" ,
},
},
} (Pour acquérir le hash, merci de supprimer la ligne contenant .hash , le compilateur vous indiquera alors quelle ligne remettre)
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 ])]});
}Voir async.zig pour un exemple plus complet sur la façon d'utiliser les E/S asynchrones pour créer un petit serveur TCP.
Construisez tous les exemples :
$ zig build examplesConstruisez un exemple spécifique :
$ zig build sync-examples Pour tester un exemple, par ex. echo :
$ ./zig-out/bin/echo 3000dans un autre terminal
$ nc localhost 3000
hello
hello
how are you
how are you Sous Windows, les appels de fonction de réception et d'envoi sont asynchrones et coopèrent avec la boucle d'événements de bibliothèque standard lorsque io_mode = .evented est défini dans le fichier racine de votre programme.
Les autres appels (connecter, écouter, accepter, etc.) bloquent.