• Stars
    star
    271
  • Rank 151,717 (Top 3 %)
  • Language
    Zig
  • License
    MIT License
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A smallest-common-subset of socket functions for crossplatform networking, TCP & UDP

Zig Network Abstraction

Small network abstraction layer around TCP & UDP.

Features

  • Implements the minimal API surface for basic networking
  • Makes cross-platform abstractions
  • Supports blocking and non-blocking I/O via select/poll
  • UDP multicast support

Usage

Use with the package manager

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",
        },
    },
}

(To aquire the hash, please remove the line containing .hash, the compiler will then tell you which line to put back)

build.zig:

exe.addModule("network", b.dependency("network", .{}).module("network"));

Usage example

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])]});
}

See async.zig for a more complete example on how to use asynchronous I/O to make a small TCP server.

Run examples

Build all examples:

$ zig build examples

Build a specific example:

$ zig build sync-examples

To test an example, eg. echo:

$ ./zig-out/bin/echo 3000

in another terminal

$ nc localhost 3000
hello
hello
how are you
how are you

Notes

On Windows receive and send function calls are asynchronous and cooperate with the standard library event loop when io_mode = .evented is set in the root file of your program.
Other calls (connect, listen, accept etc) are blocking.

More Repositories

1

kristall

Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.
C++
653
star
2

ZigAndroidTemplate

This repository contains a example on how to create a minimal Android app in Zig.
Zig
202
star
3

SDL.zig

A shallow wrapper around SDL that provides object API and error handling
C
188
star
4

VersaTile

A simple 3D model editor based on simple quads and a sprite set.
C
160
star
5

LoLa

LoLa is a small programming language meant to be embedded into games.
Zig
150
star
6

zero-graphics

Application framework based on OpenGL ES 2.0. Runs on desktop machines, Android phones and the web
Zig
124
star
7

zig-args

Simple-to-use argument parser with struct-based config
Zig
119
star
8

zig-qoi

Quite OK Image format encoder/decoder written in Zig
Zig
109
star
9

zig-opengl

OpenGL binding generator based on the opengl registry
C#
62
star
10

Ziguana-Game-System

A retro-style gaming console running on bare x86 metal written in Zig
Zig
47
star
11

parser-toolkit

A toolkit that makes it easier to write recursive-descent parsers in Zig.
Zig
45
star
12

TinyVG

A new format for vector graphics: Tiny vector graphics
Zig
36
star
13

TextEditor

A backbone for text editors. No rendering, no input, but everything else.
Zig
32
star
14

zig-serve

Server implementations for several protocols in Zig. Includes http(s), gemini and gopher
Zig
30
star
15

zig-bearssl

A BearSSL binding for Zig
Zig
27
star
16

livedecode

A super hacky tool to decode unknown binary formats
Zig
26
star
17

any-pointer

A type erasure library for Zig that is meant to be eventually upstreamed to std
Zig
25
star
18

ZTT

Precompiled Zig text template engine
Zig
20
star
19

spu-mark-ii

CPU and home computer project
VHDL
17
star
20

zig-gamedev-lib

xq's Zig Game Development Library
Zig
16
star
21

SoftRenderLib

A collection of software rendering routines
Zig
16
star
22

BrokenRemote

A remote debugging tool for The Binding of Isaac: Afterbirth+
C++
14
star
23

zig-mqtt

A build package for mqtt-c.
Zig
14
star
24

gurl

A curl-like cli application to interact with Gemini sites.
Zig
14
star
25

ftz

A simple cross-platform file transfer utility
Zig
14
star
26

zig-uri

A small URI parser that parses URIs after RFC3986
Zig
12
star
27

makeshift

A dead-simple programming language
Zig
11
star
28

zig-gemtext

A zig library to manipulate gemini text files
Zig
10
star
29

SDL.zig-Example

A small usage example on how to build and use SDL.zig
Zig
10
star
30

waveform

Generates nice Unicode rendered waveforms.
Zig
9
star
31

OpenWorld.Engine

A C# game engine based on OpenGL and OpenTK.
C#
9
star
32

zig-tracer

A small raytracer written in zig.
Zig
9
star
33

WaveFunctionCollapse

A just-for-fun implementation of 2D wave function collapse
Zig
9
star
34

SLF

The Simple Linking Format
Zig
8
star
35

zig-assimp

Open Asset Importer Library built with Zig
C
8
star
36

OpenCL

An open source OpenCL wrapper written in C#. Usable with all .NET versions since 2.0.
C#
7
star
37

ZigPaint

A simple paint application written in Zig. Used to create an OpenGL loader/wrapper and a minimal UI system.
Zig
7
star
38

zyclone

A game engine modelled after the Acknex A8 engine which is used for Gamestudio A8.
Zig
7
star
39

lua

Fork of Lua with support for build.zig
C
6
star
40

zig-build-chapter-2

Files for the zig build explained series
C
6
star
41

TIS-100

A real word implementation of the fantastic TIS-100 CPU by Zachtronics.
VHDL
5
star
42

Crayos

Global Game Jam 2024 Game
Go
5
star
43

acknext

A game engine prototype loosely inspired on the Acknex A8 engine.
Logos
4
star
44

SQEditor

ShadeQ Level Editor for Lite-C
C
4
star
45

turtlefont

A small vector graphics font file format with an example font.
Zig
4
star
46

cg-workbench

Live shader and graphics coding tool
C
4
star
47

zig-sg4f-playground

A playground to try out different stuff with a propietary LPC1786 hardware
Zig
4
star
48

zig-ihex

An intel hex loader written in Zig
Zig
3
star
49

ESOPUNKS

Implementation of the EXA programming language by Zachtronics
Zig
3
star
50

SmallscaleCI

A very tiny CI implementation for self-hosted runners
Shell
3
star
51

TUST

Scripting Library and Game Templates for Gamestudio A8
C
3
star
52

PandorOS

Another attempt to create a small operating system. This time, more features, less fancy code.
C
3
star
53

asciitable

A very basic tool that just prints the ascii table
Zig
3
star
54

AckNET

A .NET wrapper for the Acknex Engine.
C#
3
star
55

LoLa-csharp

Logic Language, a small embeddable scripting language meant for user-based script input in games
C#
3
star
56

ashet.computer

A self-made computer platform
Lua
2
star
57

zig-kms-dri

Experiments with KMS and DRI. Who needs X11/Wayland anyways?!
Zig
2
star
58

Retro-FPS

Oldschoolish first person shooter.
C
2
star
59

zig-ode

Zig ODE sdk
Zig
2
star
60

cbm-tools

A small collection of CBM computer related tools
Zig
2
star
61

pkg

Project and library package manager. Similar to linux package managers but for libraries and project templates.
C#
2
star
62

maps

Multiple Audio Playback Streams - A basic audio mixing library
Zig
2
star
63

psi

A work-in-progress programming language, focused on a kind of crazy, but "well" considered concept...
C#
2
star
64

trainOS

An operating system with everything built custom.
Makefile
2
star
65

WMB

Gamestudio WMB level loader in C++17
C++
2
star
66

zig-mbedtls

A mbedtls build wrapper for Zig build
C
2
star
67

I2P.Sam

C# Interface to the I2P SAM protocol.
C#
2
star
68

Uml2Cpp

Write your own classes with an easy to use modeling language and convert your code to C++. The generated source is prepared for the use with Qt and an example file explains how to use the script.
Lua
2
star
69

ShaderCore

ShaderCore is a shader library for OpenTK and OpenGL 4.0 or larger. It provides single shader files that have conditional compilation, include files, default shader and a shader class system. This provides flexible shader code with much lesser redundtant code to be written.
C#
2
star
70

weekend-raytracer

Just a tiny raytracer in several languages
C++
1
star
71

hyperdoc

A hyperlinked rich text format
Zig
1
star
72

depmake

Simple build system made for trainOS
C#
1
star
73

lola-vscode

LoLa extension for VSCode
1
star
74

SDL3-Api-Generator-Example

C
1
star
75

PeopleDoOpenGL

Made at Nordlicht 2018, teaching people OpenGL
C
1
star
76

ker

A really small C++ library that provides some basic collections and value types.
C++
1
star
77

ecp5-quickstart

A blinky template for a full ECP5 verilog workflow including simulation, synthesis and programming
Verilog
1
star
78

MidiV

A midi visualization tool
C++
1
star
79

fraxinus

Small simple terminal emulation library
Zig
1
star
80

TerraForm

A feature based terrain editor
C++
1
star
81

VoxelizedRenderer

Simple uniform grid voxel renderer with OpenCL, written in C#.
C#
1
star
82

minitest

A minimal C++ testing framework in 101 LOC
C++
1
star
83

ggj-2021

Untitled Game for Global Game Jam
Lua
1
star
84

gemini-web-bridge

Serving simple web files with support for gemini translation
Lua
1
star
85

zfx-logbot

IRC LogBot made for #zfx, #lost on irc.euirc.net
Lua
1
star
86

DasOS

DasOS is a research project which contains prototypes for different parts regarding OS development like kernels, virtual machines, file formats and systems.
C
1
star
87

bullshit-bingo

BULLSHIT!
Lua
1
star
88

avr-tutorial

Contains some basic examples on how to set up an AVR project
TeX
1
star
89

navmesh

A navmesh implementation in zig
Zig
1
star
90

CodersNotepad

Spiritual clone of ProgrammersNotepad 2 made with Qt.
C++
1
star
91

KernelTemplate

A pretty primitive kernel base with physical and virtual memory management and a console.
C
1
star
92

NextMMO

An RPGMaker styled multiplayer game focused on, well, nothing special.
JavaScript
1
star
93

BlocksWorld

BlocksWorld is an attempt to create a small game that provides a creativity environment where players can build their own (small) worlds.
C#
1
star
94

DbusAvrLink

A dbus (TI calculator protocol) implementiation for AVRs.
Assembly
1
star
95

Sharpsole

C# goes scripting! A C# console compile-and-execute tool. Compiles one or more files into a in-memory assembly and runs it immediately.
C#
1
star
96

libgamestudio

A library that decodes file formats used by the Gamestudio/Acknex engine
Zig
1
star
97

tools.mq32.de

A collection of small, web-based tools
HTML
1
star
98

Lylios

A small pathtracer, nothing special really
C++
1
star
99

link.zig-concept-art

A concept for a replacement for linker scripts
Zig
1
star
100

LOST

LOST Programming Language
1
star