
Also, updates some of the mzlib files to point at `racket/*' libraries rather than to `scheme/*' ones.
101 lines
3.5 KiB
Racket
101 lines
3.5 KiB
Racket
#lang scribble/doc
|
|
@(require "common.rkt"
|
|
(for-label net/tcp-sig net/tcp-unit net/url-unit net/tcp-redirect
|
|
net/ssl-tcp-unit racket/tcp))
|
|
|
|
@title[#:tag "tcp"]{TCP: Unit and Signature}
|
|
|
|
The @racketmodname[net/tcp-sig] and @racketmodname[net/tcp-unit]
|
|
libraries define a @racket[tcp^] signature and @racket[tcp@]
|
|
implementation, where the implementation uses
|
|
@racketmodname[racket/tcp].
|
|
|
|
Some units in the @filepath{net} collection import @racket[tcp^], so
|
|
that they can be used with transports other than plain TCP. For
|
|
example, @racket[url@] imports @racket[tcp^].
|
|
|
|
See also @racket[tcp-redirect] and @racket[make-ssl-tcp@].
|
|
|
|
@section{TCP Signature}
|
|
|
|
@defmodule[net/tcp-sig]
|
|
|
|
@defsignature[tcp^ ()]{
|
|
|
|
@defproc[(tcp-listen [port-no (and/c exact-nonnegative-integer?
|
|
(integer-in 1 65535))]
|
|
[max-allow-wait exact-nonnegative-integer? 4]
|
|
[reuse? any/c #f]
|
|
[hostname (or/c string? false/c) #f])
|
|
@#,sigelem[tcp^ tcp-listener?]]{
|
|
|
|
Like @racket[tcp-listen] from @racketmodname[racket/tcp].}
|
|
|
|
@defproc[(tcp-connect [hostname string?]
|
|
[port-no (and/c exact-nonnegative-integer?
|
|
(integer-in 1 65535))]
|
|
[local-hostname (or/c string? false/c) #f]
|
|
[local-port-no (or/c (and/c exact-nonnegative-integer?
|
|
(integer-in 1 65535))
|
|
false/c)
|
|
#f])
|
|
(values input-port? output-port?)]{
|
|
|
|
Like @racket[tcp-connect] from @racketmodname[racket/tcp].}
|
|
|
|
@defproc[(tcp-connect/enable-break [hostname string?]
|
|
[port-no (and/c exact-nonnegative-integer?
|
|
(integer-in 1 65535))]
|
|
[local-hostname (or/c string? false/c) #f]
|
|
[local-port-no (or/c (and/c exact-nonnegative-integer?
|
|
(integer-in 1 65535))
|
|
false/c)])
|
|
(values input-port? output-port?)]{
|
|
|
|
Like @racket[tcp-connect/enable-break] from @racketmodname[racket/tcp].}
|
|
|
|
@defproc[(tcp-accept [listener @#,sigelem[tcp^ tcp-listener?]])
|
|
(values input-port? output-port?)]{
|
|
|
|
Like @racket[tcp-accept] from @racketmodname[racket/tcp].}
|
|
|
|
@defproc[(tcp-accept/enable-break [listener @#,sigelem[tcp^ tcp-listener?]])
|
|
(values input-port? output-port?)]{
|
|
|
|
Like @racket[tcp-accept/enable-break] from @racketmodname[racket/tcp].}
|
|
|
|
@defproc[(tcp-accept-ready? [listener @#,sigelem[tcp^ tcp-listener?]]) boolean?]{
|
|
|
|
Like @racket[tcp-accept-ready?] from @racketmodname[racket/tcp].}
|
|
|
|
@defproc[(tcp-close [listener @#,sigelem[tcp^ tcp-listener?]]) void?]{
|
|
|
|
Like @racket[tcp-close] from @racketmodname[racket/tcp].}
|
|
|
|
@defproc[(tcp-listener? [v any/c]) boolean?]{
|
|
|
|
Like @racket[tcp-listener?] from @racketmodname[racket/tcp].}
|
|
|
|
@defproc[(tcp-abandon-port [tcp-port port?]) void?]{
|
|
|
|
Like @racket[tcp-abandon-port] from @racketmodname[racket/tcp].}
|
|
|
|
@defproc[(tcp-addresses [tcp-port port?]
|
|
[port-numbers? any/c #f])
|
|
(or/c (values string? string?)
|
|
(values string? (integer-in 1 65535)
|
|
string? (integer-in 1 65535)))]{
|
|
|
|
Like @racket[tcp-addresses] from @racketmodname[racket/tcp].}
|
|
|
|
}
|
|
|
|
@section{TCP Unit}
|
|
|
|
@defmodule[net/tcp-unit]
|
|
|
|
@defthing[tcp@ unit?]{
|
|
|
|
Imports nothing and exports @racket[tcp^], implemented using
|
|
@racketmodname[racket/tcp].}
|