zig network
1.0.0
طبقة تجريد شبكة صغيرة حول TCP و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" ,
},
},
}
(للحصول على التجزئة، يرجى إزالة السطر الذي يحتوي على .hash
، وسيخبرك المترجم بعد ذلك بالخط الذي يجب إعادته)
build.zig
.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 ])]});
}
راجع async.zig للحصول على مثال أكثر اكتمالاً حول كيفية استخدام الإدخال/الإخراج غير المتزامن لإنشاء خادم TCP صغير.
بناء جميع الأمثلة:
$ zig build examples
بناء مثال محدد:
$ zig build sync-examples
لاختبار مثال، على سبيل المثال. echo
:
$ ./zig-out/bin/echo 3000
في محطة أخرى
$ nc localhost 3000
hello
hello
how are you
how are you
في نظام التشغيل Windows، تكون استدعاءات وظائف الاستقبال والإرسال غير متزامنة وتتعاون مع حلقة أحداث المكتبة القياسية عندما يتم تعيين io_mode = .evented
في الملف الجذر لبرنامجك.
يتم حظر المكالمات الأخرى (الاتصال والاستماع والقبول وما إلى ذلك).