Added server example
This commit is contained in:
parent
9c53235e7e
commit
559df424d3
5 changed files with 71 additions and 7 deletions
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)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue