{"size": 898, "ext": "scrbl", "max_stars_repo_path": "pkgs/net-doc/net/scribblings/tcp-redirect.scrbl", "max_stars_repo_name": "lkh01/racket", "max_stars_repo_stars_event_min_datetime": "2018-07-29T04:13:52.000Z", "max_stars_repo_stars_event_max_datetime": "2022-02-14T16:11:17.000Z", "max_issues_repo_path": "pkgs/net-doc/net/scribblings/tcp-redirect.scrbl", "max_issues_repo_name": "lkh01/racket", "max_issues_repo_issues_event_min_datetime": "2017-08-25T20:26:37.000Z", "max_issues_repo_issues_event_max_datetime": "2022-02-26T17:48:40.000Z", "max_forks_repo_path": "pkgs/net-doc/net/scribblings/tcp-redirect.scrbl", "max_forks_repo_name": "lkh01/racket", "max_forks_repo_forks_event_min_datetime": "2016-04-25T11:47:57.000Z", "max_forks_repo_forks_event_max_datetime": "2017-05-09T14:52:48.000Z"}
{"max_stars_count": 10, "max_issues_count": 15, "max_forks_count": 3, "avg_line_length": 40.8181818182, "max_line_length": 70, "alphanum_fraction": 0.7672605791}
#lang scribble/doc
@(require "common.rkt" (for-label net/tcp-redirect net/tcp-sig))

@title[#:tag "tcp-redirect"]{TCP Redirect: @racket[tcp^] via Channels}

@defmodule[net/tcp-redirect]{The @racketmodname[net/tcp-redirect]
library provides a function for directing some TCP port numbers to use
buffered channels instead of the TCP support from
@racketmodname[racket/tcp].}

@defproc[(tcp-redirect [port-numbers (listof (integer-in 0 65535))])
         unit?]{

Returns a unit that implements @racket[tcp^]. For port numbers not
listed in @racket[port-numbers], the unit's implementations are the
@racketmodname[racket/tcp] implementations.

For the port numbers listed in @racket[port-numbers] and for
connections to @racket["127.0.0.1"], the unit's implementation does
not use TCP connections, but instead uses internal buffered
channels. Such channels behave exactly as TCP listeners and ports.}
