-(defmethod bind-to-address ((address udp-address))
- (make-instance 'sbcl-datagram-socket
- :sb-socket (with-sb-socket (sk (sb-bsd-socket-for-address address))
- (handler-case
- (apply #'sb-bsd-sockets:socket-bind sk (map-address-to-sbcl sk address))
- (sb-bsd-sockets:address-in-use-error ()
- (error 'address-busy :address address)))
- sk)))
-
-(defmethod connect-to-address ((remote udp-address) &key local)
- (typecase local
- (string (setf local (resolve-address local))))
- (make-instance 'sbcl-datagram-socket
- :sb-socket (with-sb-socket (sk (sb-bsd-socket-for-address (if local local remote)))
- (if local
- (handler-case
- (apply #'sb-bsd-sockets:socket-bind sk (map-address-to-sbcl sk local))
- (sb-bsd-sockets:address-in-use-error ()
- (error 'address-busy :address local))))
- (apply #'sb-bsd-sockets:socket-connect sk (map-address-to-sbcl sk remote))
- sk)))
-