El modulo de ZX BASIC streams ahora puede escuchar en un socket de TCP - significa que puedo escribir este programa en ZX BASIC, que escucha en puerta 2001 para un nuevo conexión desde cualquier ordenador.
Código: Seleccionar todo
10 %listen #4, 2001
20 %accept #5, 4
30 PRINT #5, RND
40 GO TO 30
El ejemplo arriba es muy sencillo, por supuesto. En mi PC, puedo teclear:
Código: Seleccionar todo
telnet spectrum 2001
...y entonces, veré una lista de números aleatorios en la pantalla del PC.
La orden "%listen" crea un socket de escuchar. Este socket no puede enviar o recibir datos - es solo para escuchar para conexiones nuevas. La orden "%accept" crea el socket para los datos. Se puede aceptar hasta 4 conexiones de TCP.
Un ejemplo más complejo. Este ejemplo puede enviar números aleatorios a hasta 4 ordenadores diferentes:
Código: Seleccionar todo
10 %listen #4,2001
20 LET m=4
30 IF m=4 THEN GO TO 100
40 FOR i=5 TO m
50 PRINT #i;RND
60 NEXT i
100 IF INKEY$#4="1" THEN GO TO 200
110 GO TO 30
200 LET m=m+1
210 %accept #m,4
220 GO TO 40
Por supuesto, este ejemplo no puede manejar los sockets (¡nunca cerrará un socket!) pero muestra cómo se puede aceptar más de uno socket - sin bloqueando. La orden INKEY$# le da al programa "1" si hay una conexión nueva. Si no hay, la orden da un string vacío.
Hay más código que tengo que escribir - por ejemplo, un canal de control para que el usuario pueda examinar el estado de los sockets... pero ahora es posible escribir un servidor de web en BASIC