Previous: TCP Sockets, Up: Operating-System Interface
This section contains assorted operating-system facilities that don't fit into other categories.
microcode-id/operating-system
is bound to a symbol that specifies the type of operating system that Scheme is running under. There are two possible values:unix
ornt
.
microcode-id/operating-system-name
is a string containing the same name asmicrocode-id/operating-system
; the latter is created by interning the former as a symbol.
This variable is a string that identifies the particular variant of the operating system that Scheme is running under. Here are some of the possible values:
"GNU/Linux" "MacOSX" "Microsoft Windows NT 4.0 (Build 1381; Service Pack 3)"For Windows systems, it is recommended that you match on the prefix of this string and ignore the
"Build"
suffix. This is because the suffix may contain information about service packs or fixes, while the prefix will be constant for a particular version of Windows.
The next few procedures provide access to the domain name service
(DNS), which maintains associations between internet host
names such as "www.swiss.ai.mit.edu"
and IP addresses,
such as 18.23.0.16
. In MIT/GNU Scheme, we represent an internet host
name as a string, and an IP address as a byte vector of length
4 (byte vectors are just character strings that are accessed using
vector-8b-ref
rather than string-ref
). The bytes in an
IP address read in the same order as they do when written out:
(get-host-by-name "www.swiss") => #("\022\027\000\020")
Looks up the internet host name host-name using the DNS, returning a vector of IP addresses for the corresponding host, or
#f
if there is no such host. Usually the returned vector has only one element, but if a host has more than one network interface, the vector might have more than one element.(get-host-by-name "www.swiss") => #("\022\027\000\020")
Does a reverse DNS lookup on ip-address, returning the internet host name corresponding to that address, or
#f
if there is no such host.(get-host-by-address "\022\027\000\020") => "swissnet.ai.mit.edu"
Finds the “canonical” internet host name for host-name. For example:
(canonical-host-name "zurich") => "zurich.ai.mit.edu" (canonical-host-name "www.swiss") => "swissnet.ai.mit.edu"In both examples, the default internet domain `ai.mit.edu' is added to host-name. In the second example,
"www.swiss"
is an alias for another computer named"swissnet"
.
Returns the string that identifies the computer that MIT/GNU Scheme is running on. Usually this is an unqualified internet host name, i.e. the host name without the domain suffix:
(get-host-name) => "aarau"
Returns the canonical internet host name of the computer that MIT/GNU Scheme is running on. So, in contrast to the example for
get-host-name
:(os/hostname) => "aarau.ai.mit.edu"
Allocates and returns an IP address object. This is just a string of a fixed length (current 4 bytes) into which an IP address may be stored. This procedure is used to generate an appropriate argument to be passed to
tcp-server-connection-accept
.(allocate-host-address) => "Xe\034\241"
Return an IP address object that specifies “any host”. This object is useful only when passed as the address argument to
open-tcp-server-socket
.(host-address-any) => "\000\000\000\000"
Return an IP address object that specifies the local loopback network interface. The loopback interface is a software network interface that can be used only for communicating between processes on the same computer. This address object is useful only when passed as the address argument to
open-tcp-server-socket
.(host-address-loopback) => "\177\000\000\001"