You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.2 KiB
36 lines
1.2 KiB
#lang racket
|
|
|
|
;;TCP
|
|
;;print-from-port : port -> void
|
|
;;prints out lines from the port until there are no more lines to print.
|
|
(define (print-from-port port)
|
|
(if (char-ready? port)
|
|
(let ([nextchar (read-char port)])
|
|
(printf (if (char=? #\~ nextchar)
|
|
"~~"
|
|
(string nextchar)))
|
|
(print-from-port port))
|
|
(printf "~n")))
|
|
|
|
;;send-to-port : port -> void
|
|
;;sends direct input from the user to the port.
|
|
(define (send-to-port port)
|
|
(let ([input (read-line)])
|
|
(if (not (string=? input "n"))
|
|
(begin (display (string-append input "\r\n") port)
|
|
(flush-output port)
|
|
(printf "Sending ~a~n" input))
|
|
(printf "Not sending anything.~n"))))
|
|
|
|
;;irc-connect : string number (port port -> void) -> void
|
|
;;connects to an IRC network, and begins running the provided irc handler.
|
|
(define (irc-connect server port handler)
|
|
(call-with-values (lambda () (tcp-connect server port))
|
|
(lambda (arguments) (handler (first arguments) (second arguments)))))
|
|
|
|
(define (irc-handle in out)
|
|
(print-from-port in)
|
|
(send-to-port out)
|
|
(irc-handle in out))
|
|
|
|
;(irc-connect "localhost" 6667 irc-handle)
|