changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/net/tcp.lisp

changeset 698: 96958d3eb5b0
parent: aac665e2f5bf
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
267
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 160
diff changeset
1
 ;;; net/tcp.lisp --- TCP utilities
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 160
diff changeset
2
 
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 160
diff changeset
3
 ;;
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 160
diff changeset
4
 
f3d814fb136a db upgrades, alik, ignoring c files (for now)
Richard Westhaver <ellis@rwest.io>
parents: 160
diff changeset
5
 ;;; Code:
105
524dfb768c7a added PWN, NET, OBJ/URI
ellis <ellis@rwest.io>
parents:
diff changeset
6
 (in-package :net/tcp)
524dfb768c7a added PWN, NET, OBJ/URI
ellis <ellis@rwest.io>
parents:
diff changeset
7
 
524dfb768c7a added PWN, NET, OBJ/URI
ellis <ellis@rwest.io>
parents:
diff changeset
8
 (defun tcp-server (port)
524dfb768c7a added PWN, NET, OBJ/URI
ellis <ellis@rwest.io>
parents:
diff changeset
9
   (let ((s (make-instance 'inet-socket :type :stream :protocol :tcp)))
524dfb768c7a added PWN, NET, OBJ/URI
ellis <ellis@rwest.io>
parents:
diff changeset
10
     (socket-bind s #(0 0 0 0) port)
524dfb768c7a added PWN, NET, OBJ/URI
ellis <ellis@rwest.io>
parents:
diff changeset
11
     (loop
160
a5e8d48e6549 http stuff
ellis <ellis@rwest.io>
parents: 105
diff changeset
12
       (multiple-value-bind (buf len addr port) (socket-receive s nil 500)
a5e8d48e6549 http stuff
ellis <ellis@rwest.io>
parents: 105
diff changeset
13
         (format t "Received ~A bytes from ~A:~A - ~A ~%"
a5e8d48e6549 http stuff
ellis <ellis@rwest.io>
parents: 105
diff changeset
14
                 len addr port (subseq buf 0 (min 10 len)))))))
356
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
15
 
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
16
 (defvar *tcp-ping-size* 512)
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
17
 
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
18
 (defun tcp-ping-server (port &key (count 16))
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
19
   (let ((s (make-instance 'inet-socket :type :stream :protocol :tcp)))
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
20
     (socket-bind s #(0 0 0 0) port)
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
21
     (loop for i from 0 upto count
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
22
           do (multiple-value-bind (buf len address port) (socket-receive s nil *tcp-ping-size*)
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
23
                (format t "(~A) Received ~A bytes from ~A:~A - ~A ~%"
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
24
                        i len address port (subseq buf 0 (min 10 len))))
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
25
           finally (socket-close s))))
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
26
 
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
27
 (defmacro with-tcp-client ((socket-var &key (addr #(0 0 0 0)) (port 0) peer) &body body)
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
28
   `(let ((,socket-var (make-instance 'inet-socket :type :stream :protocol :tcp)))
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
29
      (unwind-protect
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
30
           (progn
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
31
             (socket-bind ,socket-var ,addr ,port)
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
32
             ,(when peer `(apply #'socket-connect ,socket-var ,peer))
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
33
             ,@body)
aac665e2f5bf stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
Richard Westhaver <ellis@rwest.io>
parents: 267
diff changeset
34
        (socket-close ,socket-var))))