Added server example
This commit is contained in:
52
examples/server/server.q
Normal file
52
examples/server/server.q
Normal file
@ -0,0 +1,52 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user