make net examples print ip and data
This commit is contained in:
@@ -3,11 +3,17 @@ func main[] : i64
|
|||||||
|
|
||||||
io.println("Listening on port 8000...")
|
io.println("Listening on port 8000...")
|
||||||
let resp = mem.alloc(60000)
|
let resp = mem.alloc(60000)
|
||||||
|
let addr = mem.alloc(16)
|
||||||
while true
|
while true
|
||||||
let conn = net.accept(s)
|
let conn = net.accept(s, addr)
|
||||||
if conn < 0
|
if conn < 0
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
io.printf("%d.%d.%d.%d:%d\n", addr[4], addr[5], addr[6], addr[7], mem.read16be(addr + 2))
|
||||||
|
|
||||||
|
io.print_sized(resp, n)
|
||||||
|
io.println("")
|
||||||
|
|
||||||
let n = net.read(conn, resp, 60000)
|
let n = net.read(conn, resp, 60000)
|
||||||
net.send(conn, resp, n)
|
net.send(conn, resp, n)
|
||||||
net.close(conn)
|
net.close(conn)
|
||||||
|
|||||||
@@ -8,5 +8,10 @@ func main[] : i64
|
|||||||
net.UDPPacket.free(pkt)
|
net.UDPPacket.free(pkt)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
io.printf("%d.%d.%d.%d:%d\n", pkt->source_addr[4], pkt->source_addr[5], pkt->source_addr[6], pkt->source_addr[7], mem.read16be(pkt->source_addr + 2))
|
||||||
|
|
||||||
|
io.print_sized(pkt->data, pkt->size)
|
||||||
|
io.println("")
|
||||||
|
|
||||||
net.udp_send_to(s, pkt->source_addr, pkt->data, pkt->size)
|
net.udp_send_to(s, pkt->source_addr, pkt->data, pkt->size)
|
||||||
net.UDPPacket.free(pkt)
|
net.UDPPacket.free(pkt)
|
||||||
|
|||||||
@@ -69,8 +69,9 @@ func net.connect?[packed_host: i64, port: i64] : i64
|
|||||||
mem.free(sa)
|
mem.free(sa)
|
||||||
return s
|
return s
|
||||||
|
|
||||||
func net.accept[s: i64] : i64
|
func net.accept[s: i64, addr: ptr] : i64
|
||||||
return _builtin_syscall(SYS_accept, s, 0, 0)
|
let addrlen = 16
|
||||||
|
return _builtin_syscall(SYS_accept, s, addr, ^addrlen)
|
||||||
|
|
||||||
func net.send[s: i64, data: ptr, size: i64] : void
|
func net.send[s: i64, data: ptr, size: i64] : void
|
||||||
_builtin_syscall(SYS_sendto, s, data, size, 0, 0, 0)
|
_builtin_syscall(SYS_sendto, s, data, size, 0, 0, 0)
|
||||||
@@ -88,11 +89,6 @@ struct net.UDPSocket
|
|||||||
fd: i64
|
fd: i64
|
||||||
addr: ptr
|
addr: ptr
|
||||||
|
|
||||||
struct net.UDPPacket
|
|
||||||
data: ptr
|
|
||||||
source_addr: ptr
|
|
||||||
size: i64
|
|
||||||
|
|
||||||
func net.create_udp_client?[packed_host: i64, port: i64] : net.UDPSocket
|
func net.create_udp_client?[packed_host: i64, port: i64] : net.UDPSocket
|
||||||
err.clear()
|
err.clear()
|
||||||
let s = new* net.UDPSocket
|
let s = new* net.UDPSocket
|
||||||
@@ -131,6 +127,16 @@ func net.create_udp_server?[packed_host: i64, port: i64] : net.UDPSocket
|
|||||||
func net.udp_send_to[s: net.UDPSocket, addr: ptr, data: ptr, size: i64] : void
|
func net.udp_send_to[s: net.UDPSocket, addr: ptr, data: ptr, size: i64] : void
|
||||||
_builtin_syscall(SYS_sendto, s->fd, data, size, 0, addr, 16)
|
_builtin_syscall(SYS_sendto, s->fd, data, size, 0, addr, 16)
|
||||||
|
|
||||||
|
struct net.UDPPacket
|
||||||
|
data: ptr
|
||||||
|
source_addr: ptr
|
||||||
|
size: i64
|
||||||
|
|
||||||
|
func net.UDPPacket.free[pkt: net.UDPPacket] : void
|
||||||
|
mem.free(pkt->data)
|
||||||
|
mem.free(pkt->source_addr)
|
||||||
|
mem.free(pkt)
|
||||||
|
|
||||||
func net.udp_receive[s: net.UDPSocket, size: i64] : net.UDPPacket
|
func net.udp_receive[s: net.UDPSocket, size: i64] : net.UDPPacket
|
||||||
let pkt = new* net.UDPPacket
|
let pkt = new* net.UDPPacket
|
||||||
pkt->data = mem.alloc(size)
|
pkt->data = mem.alloc(size)
|
||||||
@@ -146,11 +152,6 @@ func net.UDPSocket.close_and_free[s: net.UDPSocket] : void
|
|||||||
mem.free(s->addr)
|
mem.free(s->addr)
|
||||||
mem.free(s)
|
mem.free(s)
|
||||||
|
|
||||||
func net.UDPPacket.free[pkt: net.UDPPacket] : void
|
|
||||||
mem.free(pkt->data)
|
|
||||||
mem.free(pkt->source_addr)
|
|
||||||
mem.free(pkt)
|
|
||||||
|
|
||||||
const DNS_TYPE_A = 1
|
const DNS_TYPE_A = 1
|
||||||
const DNS_CLASS_IN = 1
|
const DNS_CLASS_IN = 1
|
||||||
const DNS_RECURSION_DESIRED = 256
|
const DNS_RECURSION_DESIRED = 256
|
||||||
@@ -195,7 +196,7 @@ func net.build_dns_query[domain_name: str, record_type: i64] : io.Buffer
|
|||||||
io.Buffer.free(name)
|
io.Buffer.free(name)
|
||||||
return out
|
return out
|
||||||
|
|
||||||
// TODO: dont resolve IPs
|
// TODO: dont resolve if its already an IP
|
||||||
func net.resolve?[domain: str] : i64
|
func net.resolve?[domain: str] : i64
|
||||||
err.clear()
|
err.clear()
|
||||||
let query = net.build_dns_query(domain, DNS_TYPE_A)
|
let query = net.build_dns_query(domain, DNS_TYPE_A)
|
||||||
|
|||||||
Reference in New Issue
Block a user