52 lines
865 B
Plaintext
52 lines
865 B
Plaintext
|
import sys
|
||
|
|
||
|
struct sockaddr_in {
|
||
|
sin_family Int16
|
||
|
sin_port Int16
|
||
|
sin_addr Int64
|
||
|
sin_zero Int64
|
||
|
}
|
||
|
|
||
|
// Open server and client in 2 terminals:
|
||
|
// [1] q run examples/server
|
||
|
// [2] netcat 127.0.0.1 8080
|
||
|
main() {
|
||
|
socket := sys.socket(2, 1, 0)
|
||
|
|
||
|
if socket < 0 {
|
||
|
sys.write(1, "socket error\n", 13)
|
||
|
sys.exit(1)
|
||
|
}
|
||
|
|
||
|
addr := new(sockaddr_in)
|
||
|
addr.sin_family = 2
|
||
|
addr.sin_port = 0x901F
|
||
|
addr.sin_addr = 0
|
||
|
addr.sin_zero = 0
|
||
|
|
||
|
if sys.bind(socket, addr, 20) != 0 {
|
||
|
sys.write(1, "bind error\n", 11)
|
||
|
sys.exit(1)
|
||
|
}
|
||
|
|
||
|
delete(addr)
|
||
|
|
||
|
if sys.listen(socket, 10) != 0 {
|
||
|
sys.write(1, "listen error\n", 13)
|
||
|
sys.exit(1)
|
||
|
}
|
||
|
|
||
|
sys.write(1, "listening...\n", 13)
|
||
|
|
||
|
loop {
|
||
|
conn := sys.accept(socket, 0, 0)
|
||
|
|
||
|
if conn != -1 {
|
||
|
sys.write(1, "accepted\n", 9)
|
||
|
sys.write(conn, "Hello\n", 6)
|
||
|
sys.close(conn)
|
||
|
} else {
|
||
|
sys.write(1, "error\n", 6)
|
||
|
}
|
||
|
}
|
||
|
}
|