Mercurial > repos > tabletprog
annotate samples/echo.tp @ 371:625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 12 Aug 2015 19:13:52 -0700 |
parents | |
children |
rev | line source |
---|---|
371
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #{ |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 echo <- :sock { |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 print: "New connection\n" |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 data <- sock recv: 4096 |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 while: { (data length) > 0 } do: { |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 sock send: data |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 data <- sock recv: 4096 |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 } |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 print: "Connection closed\n" |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 } |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 main <- :args { |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 port <- "2323" |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 if: (args length) > 1 { |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 port <- args get: 1 |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 } |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 (socket listenOnPort: port) value: :lsock { |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 print: "Listening on port " . port . "\n" |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 continue? <- true |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 while: { continue? } do: { |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 (lsock accept) value: :csock { |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 echo: csock |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 } none: { |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 print: "Failed to accept new connection\n" |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 continue? <- false |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 } |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 } |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 } none: { |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 print: "Failed to listen on port " . port . "\n" |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 } |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 } |
625b0aa9c204
Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 } |