File tree 4 files changed +50
-27
lines changed
4 files changed +50
-27
lines changed Original file line number Diff line number Diff line change @@ -217,6 +217,7 @@ enum Transport_Types {
217
217
//Print("(max read length %d)", sock->length);
218
218
result = OS_DO_DEVICE (sock , RDC_READ ); // recv can happen immediately
219
219
if (result < 0 ) Trap_Port (RE_READ_ERROR , port , sock -> error );
220
+ VAL_TAIL (arg ) += sock -> actual ;
220
221
break ;
221
222
222
223
case A_WRITE :
Original file line number Diff line number Diff line change
1
+ Rebol [
2
+ Title: "Test UDP client"
3
+ File: %test-udp-client.r3
4
+ Note: https://github.com/Oldes/Rebol-issues/issues/1803
5
+ ]
6
+
7
+ ; start test UDP server...
8
+ launch probe to-real-file %test-udp-server.r3
9
+
10
+ ; wait some time for server to boot...
11
+ wait 0:0:0.1
12
+
13
+ stdout: system/ports/output
14
+
15
+ ; open port for output...
16
+ port: open udp://127.0.0.1:1189
17
+ port/awake: func[event][
18
+ print ["[UDP Client] event:" event/type ]
19
+ ;; console output is buffered and so messages could come out of order;
20
+ ;; to prevent it, just use the `flush`!
21
+ flush stdout
22
+ true
23
+ ]
24
+ ; wait for port to be opened (required on Windows!)...
25
+ wait port
26
+
27
+ write-udp : func [ msg [string! ]] [
28
+ print ["[UDP Client] sending:" as-yellow mold msg]
29
+ flush stdout ;= flush console buffer!
30
+ write port msg
31
+ ]
32
+ write-udp "Hello"
33
+ write-udp "Rebol"
34
+ wait 1 ;= pretending some work here...
35
+ write-udp "I'm done!"
36
+ write-udp "quit"
37
+
38
+ either system/options/script [
39
+ ask as-red "CLIENT DONE"
40
+ ][ print as-red "CLIENT DONE" wait 0.5 ]
Original file line number Diff line number Diff line change @@ -10,18 +10,23 @@ udp-server: try/except [open udp://:1189][
10
10
print as-purple "Failed to listen on UDP port 1189!"
11
11
quit
12
12
]
13
+ stdout: system/ports/output
13
14
14
15
udp-server/awake: func [event] [
15
- print ["UDP event:" as-yellow event/type ]
16
+ print ["[UDP Server] event:" event/type ]
17
+ ;; console output is buffered and so messages could come out of order;
18
+ ;; to prevent it, just use the `flush`!
19
+ flush stdout
16
20
true
17
21
]
18
22
19
23
forever [
20
24
wait read udp-server
21
25
str: to string! udp-server/data
22
- print ["UDP input:" as-green mold str]
26
+ print ["[UDP Server] received:" as-green mold str]
27
+ flush stdout ;= flush console buffer!
23
28
if str = "quit" [close udp-server break]
24
29
clear udp-server/data
25
30
]
26
- print as-red "SERVER DONE"
27
- wait 0:0:1
31
+
32
+ print as-red "SERVER DONE"
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments