zig network
1.0.0
TCP 및 UDP를 중심으로 한 소규모 네트워크 추상화 계층.
select
/ poll
통해 차단 및 비차단 I/O 지원 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
:
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 ])]});
}
비동기 I/O를 사용하여 소규모 TCP 서버를 만드는 방법에 대한 더 완전한 예제는 async.zig를 참조하세요.
모든 예시를 빌드하세요.
$ 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
가 설정된 경우 표준 라이브러리 이벤트 루프와 협력합니다.
다른 통화(연결, 듣기, 수락 등)는 차단됩니다.