From 1ff56e0856a7d8eb0b26cc0620c1a53a3f6021af Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Sat, 8 Feb 2025 23:59:19 +0100 Subject: [PATCH] Implemented network byte order conversion --- examples/server/server.q | 2 +- lib/net/htons.q | 3 +++ lib/net/net_linux.q | 2 +- lib/net/net_mac.q | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 lib/net/htons.q diff --git a/examples/server/server.q b/examples/server/server.q index 17252a3..a729032 100644 --- a/examples/server/server.q +++ b/examples/server/server.q @@ -12,7 +12,7 @@ main() { sys.exit(1) } - if net.bind(socket, 0x901F) != 0 { + if net.bind(socket, 8080) != 0 { sys.write(1, "bind error\n", 11) sys.exit(1) } diff --git a/lib/net/htons.q b/lib/net/htons.q new file mode 100644 index 0000000..c491d9b --- /dev/null +++ b/lib/net/htons.q @@ -0,0 +1,3 @@ +htons(num Int) -> Int { + return ((num & 0xFF) << 8) | (num >> 8) +} \ No newline at end of file diff --git a/lib/net/net_linux.q b/lib/net/net_linux.q index 1692469..4f226aa 100644 --- a/lib/net/net_linux.q +++ b/lib/net/net_linux.q @@ -3,7 +3,7 @@ import sys bind(socket Int, port Int) -> Int { addr := new(sys.sockaddr_in) addr.sin_family = 2 - addr.sin_port = port + addr.sin_port = htons(port) err := sys.bind(socket, addr, 20) delete(addr) return err diff --git a/lib/net/net_mac.q b/lib/net/net_mac.q index 8f2e19d..5a6cb00 100644 --- a/lib/net/net_mac.q +++ b/lib/net/net_mac.q @@ -3,7 +3,7 @@ import sys bind(socket Int, port Int) -> Int { addr := new(sys.sockaddr_in_bsd) addr.sin_family = 2 - addr.sin_port = port + addr.sin_port = htons(port) err := sys.bind(socket, addr, 16) delete(addr) return err