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