44 lines
778 B
Plaintext
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:;
|