nctref/tests/UDPEcho.nct
2025-05-03 10:03:51 +03:00

44 lines
778 B
Plaintext

@section(".text");
record sockaddr {
0: u16 family;
2: u16 port;
4: u32 addr;
8: u32 zero0;
12: u32 zero1;
}
extern u32(u32, u32, u32) socket;
extern u32(u32, sockaddr*, u32) bind;
extern u32(u32, u8*, u32, u32, u8*, u32*) recvfrom;
extern u32(u32, u8*, u32, u32, u8*, u32) sendto;
MY_SOCKET = socket(2, 2, 0);
sockaddr sa;
sa.family = 2; /* AF_INET */
sa.port = 43105; /* 25000 in net-endian */
sa.addr = 0; /* Bind to all */
sa.zero0 = 0;
sa.zero1 = 0;
bind(MY_SOCKET, &sa, 16);
loop {
OTHER_SIDE_LEN = 64;
u32 msglength = recvfrom(MY_SOCKET, &BUFFER, 512, 0, &OTHER_SIDE, &OTHER_SIDE_LEN);
sendto(MY_SOCKET, &BUFFER, msglength, 0, &OTHER_SIDE, OTHER_SIDE_LEN);
}
@section(".data");
u32 MY_SOCKET:;
u32 OTHER_SIDE_LEN:;
u8[64] OTHER_SIDE:;
u8[512] BUFFER:;