<< Prev | - Up - |
As an example, we show how to use the finger
service from Oz. Services are programs running on a host, where communication is provided by a socket connection. A well known example is the finger
service.
Services use the Internet domain, thus for connecting to them we need the name of the host computer (i. e.its Internet address) and the port of the socket. For this reason there is the procedure OS.getServByName
(see Chapter 21 of ``System Modules'') which gives the port of the socket on which the service is available. Feeding
FingerPort={OS.getServByName finger tcp}
binds FingerPort
to the port number of the service.
Note that one has to specify the protocol the service uses, here the TCP protocol (as specified by the virtual string tcp
). The port number of a service is unique for all computers, so this number does not depend on your localhost.
To get the information from this service we have to connect to the finger service. If you want to know whether the author is working right now, then you can connect to one of our computers with the Internet address wallaby.ps.uni-sb.de
on the FingerPort
. This is done by feeding the code shown in Program Program 5.2.
class FingerClient from Open.socket
meth getInfo($)
Is Ir
in
if {self read(list:Is tail:Ir len:$)}==0 then nil
else {self getInfo(Ir)} Is
end
end
end
FC = {New FingerClient client(host:'wallaby.ps.uni-sb.de'
port:FingerPort)}
For discovering whether the author is logged in, you have to send his username (in this example schulte
) followed by a newline to the service, and then receive the information:
{FC write(vs:'schulte\n')}
{Browse {FC getInfo($)}}
For receiving the information we use the method getInfo
which reads the entire information from the socket until it is closed (the finger service closes the connection automatically after sending its information).
<< Prev | - Up - |