Results of pair-programming with Sam yesterday evening
This commit is contained in:
parent
7d2d701507
commit
9791100322
|
@ -0,0 +1,19 @@
|
|||
#lang racket/base
|
||||
|
||||
(require racket/tcp)
|
||||
|
||||
(define (main port)
|
||||
(define listener (tcp-listen port 4 #t))
|
||||
(let loop ()
|
||||
(define-values (cin cout) (tcp-accept listener))
|
||||
(let connection-loop ()
|
||||
(define v (read-byte cin))
|
||||
(unless (eof-object? v)
|
||||
(write-byte v cout)
|
||||
(flush-output cout)
|
||||
(connection-loop)))
|
||||
(close-input-port cin)
|
||||
(close-output-port cout)
|
||||
(loop)))
|
||||
|
||||
(main 5999)
|
|
@ -0,0 +1,20 @@
|
|||
#lang racket/base
|
||||
|
||||
(require racket/tcp)
|
||||
|
||||
(define (main port)
|
||||
(define listener (tcp-listen port 4 #t))
|
||||
(let loop ()
|
||||
(define-values (cin cout) (tcp-accept listener))
|
||||
(let connection-loop ()
|
||||
(define v (read-byte cin))
|
||||
(unless (or (eof-object? v)
|
||||
(equal? v #"\4"))
|
||||
(write-byte v cout)
|
||||
(flush-output cout)
|
||||
(connection-loop)))
|
||||
(close-input-port cin)
|
||||
(close-output-port cout)
|
||||
(loop)))
|
||||
|
||||
(main 5999)
|
|
@ -0,0 +1,22 @@
|
|||
#lang racket/base
|
||||
|
||||
(require racket/tcp)
|
||||
|
||||
(define (main port)
|
||||
(define listener (tcp-listen port 4 #t))
|
||||
(let loop ()
|
||||
(define-values (cin cout) (tcp-accept listener))
|
||||
(thread
|
||||
(lambda ()
|
||||
(let connection-loop ()
|
||||
(define v (read-byte cin))
|
||||
(unless (or (eof-object? v)
|
||||
(equal? v #"\4"))
|
||||
(write-byte v cout)
|
||||
(flush-output cout)
|
||||
(connection-loop)))
|
||||
(close-input-port cin)
|
||||
(close-output-port cout)))
|
||||
(loop)))
|
||||
|
||||
(main 5999)
|
|
@ -0,0 +1,22 @@
|
|||
#lang racket/base
|
||||
|
||||
(define (main port)
|
||||
(define listener (tcp-listen port 4 #t))
|
||||
(let loop ()
|
||||
(define-values (cin cout) (tcp-accept listener))
|
||||
(thread (connection-handler cin cout))
|
||||
(loop)))
|
||||
|
||||
(define (connection-handler cin cout)
|
||||
(let connection-loop ()
|
||||
(define v (read-byte cin))
|
||||
(unless (or (eof-object? v) (equal? v #"\4"))
|
||||
(write-byte v cout)
|
||||
(flush-output cout)
|
||||
(connection-loop)))
|
||||
(close-input-port cin)
|
||||
(close-output-port cout))
|
||||
|
||||
(main 5999)
|
||||
|
||||
(require racket/tcp)
|
|
@ -0,0 +1,33 @@
|
|||
#lang racket/base
|
||||
|
||||
(define (listener port)
|
||||
(transition 'no-state
|
||||
(role/act (tcp-listener port)
|
||||
#:topic t
|
||||
#:on-presence (spawn (connection-handler t))))))
|
||||
|
||||
(define (connection-handler topic)
|
||||
(define-values (cin cout in-topic out-topic) (tcp-accept topic))
|
||||
(transition 'no-state
|
||||
(cin (tcp-credit 1) #:mode 'feedback)
|
||||
(role/act in-topic
|
||||
[(tcp-channel _ _ (or (== #"\4") (? eof-object?)))
|
||||
(kill)]
|
||||
[(tcp-channel _ _ (? bytes? line))
|
||||
(list (cin (tcp-credit 1) #:mode 'feedback)
|
||||
(cout line))])))
|
||||
|
||||
(define (main port)
|
||||
(ground-vm
|
||||
(transition 'no-state
|
||||
(spawn tcp-driver)
|
||||
(spawn (listener port)))))
|
||||
|
||||
(main 5999)
|
||||
|
||||
(require racket/string)
|
||||
(require racket/set)
|
||||
(require racket/match)
|
||||
(require "os2.rkt")
|
||||
(require "os2-tcp.rkt")
|
||||
(require "os2-tcp-helper.rkt")
|
Loading…
Reference in New Issue