Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 88

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 216

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 217

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 218

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 219

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 220
PK!d php_sockets.hnu[/* +----------------------------------------------------------------------+ | PHP Version 7 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2018 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Chris Vandomelen | | Sterling Hughes | | | | WinSock: Daniel Beulshausen | +----------------------------------------------------------------------+ */ #ifndef PHP_SOCKETS_H #define PHP_SOCKETS_H /* $Id$ */ #if HAVE_CONFIG_H # include "config.h" #endif #if HAVE_SOCKETS #include #ifdef PHP_WIN32 # include "windows_common.h" #endif #define PHP_SOCKETS_VERSION PHP_VERSION extern zend_module_entry sockets_module_entry; #define phpext_sockets_ptr &sockets_module_entry #ifdef PHP_WIN32 #include #else #if HAVE_SYS_SOCKET_H #include #endif #endif #ifndef PHP_WIN32 typedef int PHP_SOCKET; # define PHP_SOCKETS_API PHPAPI #else # define PHP_SOCKETS_API __declspec(dllexport) typedef SOCKET PHP_SOCKET; #endif typedef struct { PHP_SOCKET bsd_socket; int type; int error; int blocking; zval zstream; } php_socket; #ifdef PHP_WIN32 struct sockaddr_un { short sun_family; char sun_path[108]; }; #endif PHP_SOCKETS_API int php_sockets_le_socket(void); PHP_SOCKETS_API php_socket *php_create_socket(void); PHP_SOCKETS_API void php_destroy_socket(zend_resource *rsrc); PHP_SOCKETS_API void php_destroy_sockaddr(zend_resource *rsrc); #define php_sockets_le_socket_name "Socket" #define php_sockets_le_addrinfo_name "AddressInfo" #define PHP_SOCKET_ERROR(socket, msg, errn) \ do { \ int _err = (errn); /* save value to avoid repeated calls to WSAGetLastError() on Windows */ \ (socket)->error = _err; \ SOCKETS_G(last_error) = _err; \ if (_err != EAGAIN && _err != EWOULDBLOCK && _err != EINPROGRESS) { \ php_error_docref(NULL, E_WARNING, "%s [%d]: %s", msg, _err, sockets_strerror(_err)); \ } \ } while (0) ZEND_BEGIN_MODULE_GLOBALS(sockets) int last_error; char *strerror_buf; ZEND_END_MODULE_GLOBALS(sockets) ZEND_EXTERN_MODULE_GLOBALS(sockets) #define SOCKETS_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(sockets, v) enum sockopt_return { SOCKOPT_ERROR, SOCKOPT_CONTINUE, SOCKOPT_SUCCESS }; char *sockets_strerror(int error); php_socket *socket_import_file_descriptor(PHP_SOCKET sock); #else #define phpext_sockets_ptr NULL #endif #if defined(_AIX) && !defined(HAVE_SA_SS_FAMILY) # define ss_family __ss_family #endif #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ PK! unicast.pyonu[ ^c@sdZddlZddlZddlTeeeZejdx=eejdZ ej e defej dqGWdS( iPiN(t*tis i(Ri( tMYPORTtsysttimetsockettAF_INETt SOCK_DGRAMtstbindtreprtdatatsendtotsleep(((s,/usr/lib64/python2.7/Demo/sockets/unicast.pyts  PK!)a radio.pyonu[ ^c@sdZddlZddlTeeeZejdefxFejdd\ZZ ej j e e dej j eqAWdS(iPiN(t*tiis (tMYPORTtsystsockettAF_INETt SOCK_DGRAMtstbindtrecvfromtdatat wherefromtstderrtwritetreprtstdout(((s*/usr/lib64/python2.7/Demo/sockets/radio.pyts  PK!'}&QQunixserver.pyonu[ ^c@sddlZddlTdZeeeZejedejdGHejdej \Z Z x0e re j dZesPne jeqmWe jejedS(iN(t*s unix-socketsSock name is: [t]ii(tostsockettFILEtAF_UNIXt SOCK_STREAMtstbindt getsocknametlistentaccepttconntaddrtTruetrecvtdatatsendtclosetunlink(((s//usr/lib64/python2.7/Demo/sockets/unixserver.pyts      PK!l unicast.pynu[# Send UDP broadcast packets MYPORT = 50000 import sys, time from socket import * s = socket(AF_INET, SOCK_DGRAM) s.bind(('', 0)) while 1: data = repr(time.time()) + '\n' s.sendto(data, ('', MYPORT)) time.sleep(2) PK!\-unixclient.pyonu[ ^c@seddlTdZeeeZejeejdejdZej dGe eGHdS(i(t*s unix-sockets Hello, worlditReceivedN( tsockettFILEtAF_UNIXt SOCK_STREAMtstconnecttsendtrecvtdatatclosetrepr(((s//usr/lib64/python2.7/Demo/sockets/unixclient.pyts    PK!߼U telnet.pynuȯ#! /usr/bin/python2.7 # Minimal interface to the Internet telnet protocol. # # It refuses all telnet options and does not recognize any of the other # telnet commands, but can still be used to connect in line-by-line mode. # It's also useful to play with a number of other services, # like time, finger, smtp and even ftp. # # Usage: telnet host [port] # # The port may be a service name or a decimal port number; # it defaults to 'telnet'. import sys, posix, time from socket import * BUFSIZE = 1024 # Telnet protocol characters IAC = chr(255) # Interpret as command DONT = chr(254) DO = chr(253) WONT = chr(252) WILL = chr(251) def main(): host = sys.argv[1] try: hostaddr = gethostbyname(host) except error: sys.stderr.write(sys.argv[1] + ': bad host name\n') sys.exit(2) # if len(sys.argv) > 2: servname = sys.argv[2] else: servname = 'telnet' # if '0' <= servname[:1] <= '9': port = eval(servname) else: try: port = getservbyname(servname, 'tcp') except error: sys.stderr.write(servname + ': bad tcp service name\n') sys.exit(2) # s = socket(AF_INET, SOCK_STREAM) # try: s.connect((host, port)) except error, msg: sys.stderr.write('connect failed: ' + repr(msg) + '\n') sys.exit(1) # pid = posix.fork() # if pid == 0: # child -- read stdin, write socket while 1: line = sys.stdin.readline() s.send(line) else: # parent -- read socket, write stdout iac = 0 # Interpret next char as command opt = '' # Interpret next char as option while 1: data = s.recv(BUFSIZE) if not data: # EOF; kill child and exit sys.stderr.write( '(Closed by remote host)\n') posix.kill(pid, 9) sys.exit(1) cleandata = '' for c in data: if opt: print ord(c) s.send(opt + c) opt = '' elif iac: iac = 0 if c == IAC: cleandata = cleandata + c elif c in (DO, DONT): if c == DO: print '(DO)', else: print '(DONT)', opt = IAC + WONT elif c in (WILL, WONT): if c == WILL: print '(WILL)', else: print '(WONT)', opt = IAC + DONT else: print '(command)', ord(c) elif c == IAC: iac = 1 print '(IAC)', else: cleandata = cleandata + c sys.stdout.write(cleandata) sys.stdout.flush() try: main() except KeyboardInterrupt: pass PK!' rpython.pynuȯ#! /usr/bin/python2.7 # Remote python client. # Execute Python commands remotely and send output back. import sys import string from socket import * PORT = 4127 BUFSIZE = 1024 def main(): if len(sys.argv) < 3: print "usage: rpython host command" sys.exit(2) host = sys.argv[1] port = PORT i = string.find(host, ':') if i >= 0: port = string.atoi(port[i+1:]) host = host[:i] command = string.join(sys.argv[2:]) s = socket(AF_INET, SOCK_STREAM) s.connect((host, port)) s.send(command) s.shutdown(1) reply = '' while 1: data = s.recv(BUFSIZE) if not data: break reply = reply + data print reply, main() PK![gyy mcast.pyonu[ Afc@s}dZdZdZdZddlZddlZddlZddlZdZdZ dZ e d kryendS( is 225.0.0.250s'ff15:7079:7468:6f6e:6465:6d6f:6d63:6173iiNcCsMdtjdkrtnt}dtjdkr?t|n t|dS(Ns-6is-s(tsystargvt MYGROUP_6t MYGROUP_4tsendertreceiver(tgroup((s*/usr/lib64/python2.7/Demo/sockets/mcast.pytmains cCstj|dd}tj|dtj}tjdt}|dtjkrp|jtj tj |n|jtj tj |xKt rttj}|j|d|ddtftjdqWdS(Nis@isii(tsockett getaddrinfotNonet SOCK_DGRAMtstructtpacktMYTTLtAF_INETt setsockoptt IPPROTO_IPtIP_MULTICAST_TTLt IPPROTO_IPV6tIPV6_MULTICAST_HOPStTruetreprttimetsendtotMYPORTtsleep(Rtaddrinfotstttl_bintdata((s*/usr/lib64/python2.7/Demo/sockets/mcast.pyRs "cCsPtj|dd}tj|dtj}|jtjtjd|jdtftj |d|dd}|dtj kr|t j dtj }|jtjtj|n/|t j dd}|jtjtj|xYtrK|jd\}}x|dd kr.|d }qWt|d t|GHqWdS( Niitis=Is@Iiiss (RR R R Rt SOL_SOCKETt SO_REUSEADDRtbindRt inet_ptonRR R t INADDR_ANYRtIP_ADD_MEMBERSHIPRtIPV6_JOIN_GROUPRtrecvfromtstrR(RRRt group_bintmreqRR((s*/usr/lib64/python2.7/Demo/sockets/mcast.pyR1s t__main__( RRRRRR RRRRRt__name__(((s*/usr/lib64/python2.7/Demo/sockets/mcast.pyt s       PK!FG udpecho.pyonu[ Afc@sQddlZddlTd ZdZdZdZdZd ZedS( iN(t*iPiicCsdttjdkrtntjddkr<tn$tjddkrYtntdS(Niis-ss-c(tlentsystargvtusagetservertclient(((s,/usr/lib64/python2.7/Demo/sockets/udpecho.pytmains   cCs'tjt_dGHdGHtjddS(Ns,Usage: udpecho -s [port] (server)s,or: udpecho -c host [port] s    PK!$$ throughput.pynuȯ#! /usr/bin/python2.7 # Test network throughput. # # Usage: # 1) on host_A: throughput -s [port] # start a server # 2) on host_B: throughput -c count host_A [port] # start a client # # The server will service multiple clients until it is killed. # # The client performs one transfer of count*BUFSIZE bytes and # measures the time it takes (roundtrip!). import sys, time from socket import * MY_PORT = 50000 + 42 BUFSIZE = 1024 def main(): if len(sys.argv) < 2: usage() if sys.argv[1] == '-s': server() elif sys.argv[1] == '-c': client() else: usage() def usage(): sys.stdout = sys.stderr print 'Usage: (on host_A) throughput -s [port]' print 'and then: (on host_B) throughput -c count host_A [port]' sys.exit(2) def server(): if len(sys.argv) > 2: port = eval(sys.argv[2]) else: port = MY_PORT s = socket(AF_INET, SOCK_STREAM) s.bind(('', port)) s.listen(1) print 'Server ready...' while 1: conn, (host, remoteport) = s.accept() while 1: data = conn.recv(BUFSIZE) if not data: break del data conn.send('OK\n') conn.close() print 'Done with', host, 'port', remoteport def client(): if len(sys.argv) < 4: usage() count = int(eval(sys.argv[2])) host = sys.argv[3] if len(sys.argv) > 4: port = eval(sys.argv[4]) else: port = MY_PORT testdata = 'x' * (BUFSIZE-1) + '\n' t1 = time.time() s = socket(AF_INET, SOCK_STREAM) t2 = time.time() s.connect((host, port)) t3 = time.time() i = 0 while i < count: i = i+1 s.send(testdata) s.shutdown(1) # Send EOF t4 = time.time() data = s.recv(BUFSIZE) t5 = time.time() print data print 'Raw timers:', t1, t2, t3, t4, t5 print 'Intervals:', t2-t1, t3-t2, t4-t3, t5-t4 print 'Total:', t5-t1 print 'Throughput:', round((BUFSIZE*count*0.001) / (t5-t1), 3), print 'K/sec.' main() PK!C broadcast.pynu[# Send UDP broadcast packets MYPORT = 50000 import sys, time from socket import * s = socket(AF_INET, SOCK_DGRAM) s.bind(('', 0)) s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) while 1: data = repr(time.time()) + '\n' s.sendto(data, ('', MYPORT)) time.sleep(2) PK![gyy mcast.pycnu[ Afc@s}dZdZdZdZddlZddlZddlZddlZdZdZ dZ e d kryendS( is 225.0.0.250s'ff15:7079:7468:6f6e:6465:6d6f:6d63:6173iiNcCsMdtjdkrtnt}dtjdkr?t|n t|dS(Ns-6is-s(tsystargvt MYGROUP_6t MYGROUP_4tsendertreceiver(tgroup((s*/usr/lib64/python2.7/Demo/sockets/mcast.pytmains cCstj|dd}tj|dtj}tjdt}|dtjkrp|jtj tj |n|jtj tj |xKt rttj}|j|d|ddtftjdqWdS(Nis@isii(tsockett getaddrinfotNonet SOCK_DGRAMtstructtpacktMYTTLtAF_INETt setsockoptt IPPROTO_IPtIP_MULTICAST_TTLt IPPROTO_IPV6tIPV6_MULTICAST_HOPStTruetreprttimetsendtotMYPORTtsleep(Rtaddrinfotstttl_bintdata((s*/usr/lib64/python2.7/Demo/sockets/mcast.pyRs "cCsPtj|dd}tj|dtj}|jtjtjd|jdtftj |d|dd}|dtj kr|t j dtj }|jtjtj|n/|t j dd}|jtjtj|xYtrK|jd\}}x|dd kr.|d }qWt|d t|GHqWdS( Niitis=Is@Iiiss (RR R R Rt SOL_SOCKETt SO_REUSEADDRtbindRt inet_ptonRR R t INADDR_ANYRtIP_ADD_MEMBERSHIPRtIPV6_JOIN_GROUPRtrecvfromtstrR(RRRt group_bintmreqRR((s*/usr/lib64/python2.7/Demo/sockets/mcast.pyR1s t__main__( RRRRRR RRRRRt__name__(((s*/usr/lib64/python2.7/Demo/sockets/mcast.pyt s       PK!^XXftp.pynu[# A simple FTP client. # # The information to write this program was gathered from RFC 959, # but this is not a complete implementation! Yet it shows how a simple # FTP client can be built, and you are welcome to extend it to suit # it to your needs... # # How it works (assuming you've read the RFC): # # User commands are passed uninterpreted to the server. However, the # user never needs to send a PORT command. Rather, the client opens a # port right away and sends the appropriate PORT command to the server. # When a response code 150 is received, this port is used to receive # the data (which is written to stdout in this version), and when the # data is exhausted, a new port is opened and a corresponding PORT # command sent. In order to avoid errors when reusing ports quickly # (and because there is no s.getsockname() method in Python yet) we # cycle through a number of ports in the 50000 range. import sys, posix, string from socket import * BUFSIZE = 1024 # Default port numbers used by the FTP protocol. # FTP_PORT = 21 FTP_DATA_PORT = FTP_PORT - 1 # Change the data port to something not needing root permissions. # FTP_DATA_PORT = FTP_DATA_PORT + 50000 # Main program (called at the end of this file). # def main(): hostname = sys.argv[1] control(hostname) # Control process (user interface and user protocol interpreter). # def control(hostname): # # Create control connection # s = socket(AF_INET, SOCK_STREAM) s.connect((hostname, FTP_PORT)) f = s.makefile('r') # Reading the replies is easier from a file... # # Control loop # r = None while 1: code = getreply(f) if code in ('221', 'EOF'): break if code == '150': getdata(r) code = getreply(f) r = None if not r: r = newdataport(s, f) cmd = getcommand() if not cmd: break s.send(cmd + '\r\n') # Create a new data port and send a PORT command to the server for it. # (Cycle through a number of ports to avoid problems with reusing # a port within a short time.) # nextport = 0 # def newdataport(s, f): global nextport port = nextport + FTP_DATA_PORT nextport = (nextport+1) % 16 r = socket(AF_INET, SOCK_STREAM) r.bind((gethostbyname(gethostname()), port)) r.listen(1) sendportcmd(s, f, port) return r # Send an appropriate port command. # def sendportcmd(s, f, port): hostname = gethostname() hostaddr = gethostbyname(hostname) hbytes = string.splitfields(hostaddr, '.') pbytes = [repr(port//256), repr(port%256)] bytes = hbytes + pbytes cmd = 'PORT ' + string.joinfields(bytes, ',') s.send(cmd + '\r\n') code = getreply(f) # Process an ftp reply and return the 3-digit reply code (as a string). # The reply should be a line of text starting with a 3-digit number. # If the 4th char is '-', it is a multi-line reply and is # terminate by a line starting with the same 3-digit number. # Any text while receiving the reply is echoed to the file. # def getreply(f): line = f.readline() if not line: return 'EOF' print line, code = line[:3] if line[3:4] == '-': while 1: line = f.readline() if not line: break # Really an error print line, if line[:3] == code and line[3:4] != '-': break return code # Get the data from the data connection. # def getdata(r): print '(accepting data connection)' conn, host = r.accept() print '(data connection accepted)' while 1: data = conn.recv(BUFSIZE) if not data: break sys.stdout.write(data) print '(end of data connection)' # Get a command from the user. # def getcommand(): try: while 1: line = raw_input('ftp.py> ') if line: return line except EOFError: return '' # Call the main program. # main() PK!j{ echosvr.pynuȯ#! /usr/bin/python2.7 # Python implementation of an 'echo' tcp server: echo all data it receives. # # This is the simplest possible server, servicing a single request only. import sys from socket import * # The standard echo port isn't very useful, it requires root permissions! # ECHO_PORT = 7 ECHO_PORT = 50000 + 7 BUFSIZE = 1024 def main(): if len(sys.argv) > 1: port = int(eval(sys.argv[1])) else: port = ECHO_PORT s = socket(AF_INET, SOCK_STREAM) s.bind(('', port)) s.listen(1) conn, (remotehost, remoteport) = s.accept() print 'connected by', remotehost, remoteport while 1: data = conn.recv(BUFSIZE) if not data: break conn.send(data) main() PK!.)S;; echosvr.pyonu[ Afc@s6ddlZddlTdZdZdZedS(iN(t*iPiicCsttjdkr1tttjd}nt}ttt}|j d|f|j d|j \}\}}dG|G|GHx*|j t }|sPn|j|qWdS(Nits connected by(tlentsystargvtinttevalt ECHO_PORTtsockettAF_INETt SOCK_STREAMtbindtlistentaccepttrecvtBUFSIZEtsend(tporttstconnt remotehostt remoteporttdata((s,/usr/lib64/python2.7/Demo/sockets/echosvr.pytmains  iW(RRRRR(((s,/usr/lib64/python2.7/Demo/sockets/echosvr.pyts   PK!Yڎee telnet.pyonu[ Afc@sddlZddlZddlZddlTdZedZedZedZedZ edZ d Z y e Wne k rnXdS( iN(t*iiiiiic Cs!tjd}yt|}Wn9tk rXtjjtjddtjdnXttjdkr~tjd}nd}d|d kodknrt|}nHyt |d}Wn2tk rtjj|dtjdnXt t t }y|j ||fWn>tk ra}tjjd t|d tjdnXtj}|d krxtjj}|j|q}Wn}d }d } xn|jt} | stjjd tj|dtjdnd } x| D]} | r2t| GH|j| | d } q|rd }| tkrW| | } q| ttfkr| tkr|dGndGtt} q| ttfkr| tkrdGndGtt} qdGt| GHq| tkrd}dGq| | } qWtjj| tjjqWdS(Nis: bad host name ittelnett0t9ttcps: bad tcp service name sconnect failed: s its(Closed by remote host) i s(DO)s(DONT)s(WILL)s(WONT)s (command)s(IAC)(tsystargvt gethostbynameterrortstderrtwritetexittlentevalt getservbynametsockettAF_INETt SOCK_STREAMtconnecttreprtposixtforktstdintreadlinetsendtrecvtBUFSIZEtkilltordtIACtDOtDONTtWONTtWILLtstdouttflush( thostthostaddrtservnametporttstmsgtpidtlinetiactopttdatat cleandatatc((s+/usr/lib64/python2.7/Demo/sockets/telnet.pytmains|                ( RRttimeRRtchrRR RR!R"R2tKeyboardInterrupt(((s+/usr/lib64/python2.7/Demo/sockets/telnet.pyts$       M  PK!q< finger.pyonu[ Afc@sEddlZddlZddlTdZdZdZedS(iN(t*iOcCstttt}|j|tf|j|dx-|jd}|sOPntjj |q6Wtjj dS(Ns i( tsockettAF_INETt SOCK_STREAMtconnectt FINGER_PORTtsendtrecvtsyststdouttwritetflush(thosttargststbuf((s+/usr/lib64/python2.7/Demo/sockets/finger.pytfingerscCsd}d}xO|ttjkr]tj|d dkr]|tj|d}|d}qWtj|}|s}dg}nx^|D]V}d|krtj|d}||d}|| }nd}t|||qWdS(Ntit-t t@(tlenRtargvtstringtindexR(toptionstiR targtatR ((s+/usr/lib64/python2.7/Demo/sockets/finger.pytmain%s/     (RRRRRR(((s+/usr/lib64/python2.7/Demo/sockets/finger.pyt s   PK!vttREADMEnu[This directory contains some demonstrations of the socket module: broadcast.py Broadcast the time to radio.py. echosvr.py About the simplest TCP server possible. finger.py Client for the 'finger' protocol. ftp.py A very simple ftp client. gopher.py A simple gopher client. mcast.py IPv4/v6 multicast example radio.py Receive time broadcasts from broadcast.py. telnet.py Client for the 'telnet' protocol. throughput.py Client and server to measure TCP throughput. unixclient.py Unix socket example, client side unixserver.py Unix socket example, server side udpecho.py Client and server for the UDP echo protocol. PK!.)S;; echosvr.pycnu[ Afc@s6ddlZddlTdZdZdZedS(iN(t*iPiicCsttjdkr1tttjd}nt}ttt}|j d|f|j d|j \}\}}dG|G|GHx*|j t }|sPn|j|qWdS(Nits connected by(tlentsystargvtinttevalt ECHO_PORTtsockettAF_INETt SOCK_STREAMtbindtlistentaccepttrecvtBUFSIZEtsend(tporttstconnt remotehostt remoteporttdata((s,/usr/lib64/python2.7/Demo/sockets/echosvr.pytmains  iW(RRRRR(((s,/usr/lib64/python2.7/Demo/sockets/echosvr.pyts   PK!~hD7&7& gopher.pynuȯ#! /usr/bin/python2.7 # A simple gopher client. # # Usage: gopher [ [selector] host [port] ] import string import sys import os import socket # Default selector, host and port DEF_SELECTOR = '' DEF_HOST = 'gopher.micro.umn.edu' DEF_PORT = 70 # Recognized file types T_TEXTFILE = '0' T_MENU = '1' T_CSO = '2' T_ERROR = '3' T_BINHEX = '4' T_DOS = '5' T_UUENCODE = '6' T_SEARCH = '7' T_TELNET = '8' T_BINARY = '9' T_REDUNDANT = '+' T_SOUND = 's' # Dictionary mapping types to strings typename = {'0': '', '1': '', '2': '', '3': '', \ '4': '', '5': '', '6': '', '7': '', \ '8': '', '9': '', '+': '', 's': ''} # Oft-used characters and strings CRLF = '\r\n' TAB = '\t' # Open a TCP connection to a given host and port def open_socket(host, port): if not port: port = DEF_PORT elif type(port) == type(''): port = string.atoi(port) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) return s # Send a selector to a given host and port, return a file with the reply def send_request(selector, host, port): s = open_socket(host, port) s.send(selector + CRLF) s.shutdown(1) return s.makefile('r') # Get a menu in the form of a list of entries def get_menu(selector, host, port): f = send_request(selector, host, port) list = [] while 1: line = f.readline() if not line: print '(Unexpected EOF from server)' break if line[-2:] == CRLF: line = line[:-2] elif line[-1:] in CRLF: line = line[:-1] if line == '.': break if not line: print '(Empty line from server)' continue typechar = line[0] parts = string.splitfields(line[1:], TAB) if len(parts) < 4: print '(Bad line from server: %r)' % (line,) continue if len(parts) > 4: print '(Extra info from server: %r)' % (parts[4:],) parts.insert(0, typechar) list.append(parts) f.close() return list # Get a text file as a list of lines, with trailing CRLF stripped def get_textfile(selector, host, port): list = [] get_alt_textfile(selector, host, port, list.append) return list # Get a text file and pass each line to a function, with trailing CRLF stripped def get_alt_textfile(selector, host, port, func): f = send_request(selector, host, port) while 1: line = f.readline() if not line: print '(Unexpected EOF from server)' break if line[-2:] == CRLF: line = line[:-2] elif line[-1:] in CRLF: line = line[:-1] if line == '.': break if line[:2] == '..': line = line[1:] func(line) f.close() # Get a binary file as one solid data block def get_binary(selector, host, port): f = send_request(selector, host, port) data = f.read() f.close() return data # Get a binary file and pass each block to a function def get_alt_binary(selector, host, port, func, blocksize): f = send_request(selector, host, port) while 1: data = f.read(blocksize) if not data: break func(data) # A *very* simple interactive browser # Browser main command, has default arguments def browser(*args): selector = DEF_SELECTOR host = DEF_HOST port = DEF_PORT n = len(args) if n > 0 and args[0]: selector = args[0] if n > 1 and args[1]: host = args[1] if n > 2 and args[2]: port = args[2] if n > 3: raise RuntimeError, 'too many args' try: browse_menu(selector, host, port) except socket.error, msg: print 'Socket error:', msg sys.exit(1) except KeyboardInterrupt: print '\n[Goodbye]' # Browse a menu def browse_menu(selector, host, port): list = get_menu(selector, host, port) while 1: print '----- MENU -----' print 'Selector:', repr(selector) print 'Host:', host, ' Port:', port print for i in range(len(list)): item = list[i] typechar, description = item[0], item[1] print string.rjust(repr(i+1), 3) + ':', description, if typename.has_key(typechar): print typename[typechar] else: print '' print while 1: try: str = raw_input('Choice [CR == up a level]: ') except EOFError: print return if not str: return try: choice = string.atoi(str) except string.atoi_error: print 'Choice must be a number; try again:' continue if not 0 < choice <= len(list): print 'Choice out of range; try again:' continue break item = list[choice-1] typechar = item[0] [i_selector, i_host, i_port] = item[2:5] if typebrowser.has_key(typechar): browserfunc = typebrowser[typechar] try: browserfunc(i_selector, i_host, i_port) except (IOError, socket.error): print '***', sys.exc_type, ':', sys.exc_value else: print 'Unsupported object type' # Browse a text file def browse_textfile(selector, host, port): x = None try: p = os.popen('${PAGER-more}', 'w') x = SaveLines(p) get_alt_textfile(selector, host, port, x.writeln) except IOError, msg: print 'IOError:', msg if x: x.close() f = open_savefile() if not f: return x = SaveLines(f) try: get_alt_textfile(selector, host, port, x.writeln) print 'Done.' except IOError, msg: print 'IOError:', msg x.close() # Browse a search index def browse_search(selector, host, port): while 1: print '----- SEARCH -----' print 'Selector:', repr(selector) print 'Host:', host, ' Port:', port print try: query = raw_input('Query [CR == up a level]: ') except EOFError: print break query = string.strip(query) if not query: break if '\t' in query: print 'Sorry, queries cannot contain tabs' continue browse_menu(selector + TAB + query, host, port) # "Browse" telnet-based information, i.e. open a telnet session def browse_telnet(selector, host, port): if selector: print 'Log in as', repr(selector) if type(port) <> type(''): port = repr(port) sts = os.system('set -x; exec telnet ' + host + ' ' + port) if sts: print 'Exit status:', sts # "Browse" a binary file, i.e. save it to a file def browse_binary(selector, host, port): f = open_savefile() if not f: return x = SaveWithProgress(f) get_alt_binary(selector, host, port, x.write, 8*1024) x.close() # "Browse" a sound file, i.e. play it or save it def browse_sound(selector, host, port): browse_binary(selector, host, port) # Dictionary mapping types to browser functions typebrowser = {'0': browse_textfile, '1': browse_menu, \ '4': browse_binary, '5': browse_binary, '6': browse_textfile, \ '7': browse_search, \ '8': browse_telnet, '9': browse_binary, 's': browse_sound} # Class used to save lines, appending a newline to each line class SaveLines: def __init__(self, f): self.f = f def writeln(self, line): self.f.write(line + '\n') def close(self): sts = self.f.close() if sts: print 'Exit status:', sts # Class used to save data while showing progress class SaveWithProgress: def __init__(self, f): self.f = f def write(self, data): sys.stdout.write('#') sys.stdout.flush() self.f.write(data) def close(self): print sts = self.f.close() if sts: print 'Exit status:', sts # Ask for and open a save file, or return None if not to save def open_savefile(): try: savefile = raw_input( \ 'Save as file [CR == don\'t save; |pipeline or ~user/... OK]: ') except EOFError: print return None savefile = string.strip(savefile) if not savefile: return None if savefile[0] == '|': cmd = string.strip(savefile[1:]) try: p = os.popen(cmd, 'w') except IOError, msg: print repr(cmd), ':', msg return None print 'Piping through', repr(cmd), '...' return p if savefile[0] == '~': savefile = os.path.expanduser(savefile) try: f = open(savefile, 'w') except IOError, msg: print repr(savefile), ':', msg return None print 'Saving to', repr(savefile), '...' return f # Test program def test(): if sys.argv[4:]: print 'usage: gopher [ [selector] host [port] ]' sys.exit(2) elif sys.argv[3:]: browser(sys.argv[1], sys.argv[2], sys.argv[3]) elif sys.argv[2:]: try: port = string.atoi(sys.argv[2]) selector = '' host = sys.argv[1] except string.atoi_error: selector = sys.argv[1] host = sys.argv[2] port = '' browser(selector, host, port) elif sys.argv[1:]: browser('', sys.argv[1]) else: browser() # Call the test program as a main program test() PK!Se rpython.pyonu[ Afc@sBddlZddlZddlTdZdZdZedS(iN(t*iicCs ttjdkr*dGHtjdntjd}t}tj|d}|dkrtj||d}|| }ntjtjd}t t t }|j ||f|j ||jdd}x'|jt}|sPn||}qW|GdS(Nisusage: rpython host commandiit:it(tlentsystargvtexittPORTtstringtfindtatoitjointsockettAF_INETt SOCK_STREAMtconnecttsendtshutdowntrecvtBUFSIZE(thosttporttitcommandtstreplytdata((s,/usr/lib64/python2.7/Demo/sockets/rpython.pytmain s*     (RRR RRR(((s,/usr/lib64/python2.7/Demo/sockets/rpython.pyts    PK!It unixserver.pynu[# Echo server demo using Unix sockets (handles one connection only) # Piet van Oostrum import os from socket import * FILE = 'unix-socket' s = socket(AF_UNIX, SOCK_STREAM) s.bind(FILE) print 'Sock name is: ['+s.getsockname()+']' # Wait for a connection s.listen(1) conn, addr = s.accept() while True: data = conn.recv(1024) if not data: break conn.send(data) conn.close() os.unlink(FILE) PK!## broadcast.pycnu[ ^c@sdZddlZddlZddlTeeeZejd eje e dx=e ejdZ ej e defejd qZWdS( iPiN(t*tiis s i(Ri(tMYPORTtsysttimetsockettAF_INETt SOCK_DGRAMtstbindt setsockoptt SOL_SOCKETt SO_BROADCASTtreprtdatatsendtotsleep(((s./usr/lib64/python2.7/Demo/sockets/broadcast.pyts  PK!IA} unixclient.pynu[# Echo client demo using Unix sockets # Piet van Oostrum from socket import * FILE = 'unix-socket' s = socket(AF_UNIX, SOCK_STREAM) s.connect(FILE) s.send('Hello, world') data = s.recv(1024) s.close() print 'Received', repr(data) PK!)a radio.pycnu[ ^c@sdZddlZddlTeeeZejdefxFejdd\ZZ ej j e e dej j eqAWdS(iPiN(t*tiis (tMYPORTtsystsockettAF_INETt SOCK_DGRAMtstbindtrecvfromtdatat wherefromtstderrtwritetreprtstdout(((s*/usr/lib64/python2.7/Demo/sockets/radio.pyts  PK! unicast.pycnu[ ^c@sdZddlZddlZddlTeeeZejdx=eejdZ ej e defej dqGWdS( iPiN(t*tis i(Ri( tMYPORTtsysttimetsockettAF_INETt SOCK_DGRAMtstbindtreprtdatatsendtotsleep(((s,/usr/lib64/python2.7/Demo/sockets/unicast.pyts  PK!## broadcast.pyonu[ ^c@sdZddlZddlZddlTeeeZejd eje e dx=e ejdZ ej e defejd qZWdS( iPiN(t*tiis s i(Ri(tMYPORTtsysttimetsockettAF_INETt SOCK_DGRAMtstbindt setsockoptt SOL_SOCKETt SO_BROADCASTtreprtdatatsendtotsleep(((s./usr/lib64/python2.7/Demo/sockets/broadcast.pyts  PK!c rpythond.pynuȯ#! /usr/bin/python2.7 # Remote python server. # Execute Python commands remotely and send output back. # WARNING: This version has a gaping security hole -- it accepts requests # from any host on the Internet! import sys from socket import * import StringIO import traceback PORT = 4127 BUFSIZE = 1024 def main(): if len(sys.argv) > 1: port = int(eval(sys.argv[1])) else: port = PORT s = socket(AF_INET, SOCK_STREAM) s.bind(('', port)) s.listen(1) while 1: conn, (remotehost, remoteport) = s.accept() print 'connected by', remotehost, remoteport request = '' while 1: data = conn.recv(BUFSIZE) if not data: break request = request + data reply = execute(request) conn.send(reply) conn.close() def execute(request): stdout = sys.stdout stderr = sys.stderr sys.stdout = sys.stderr = fakefile = StringIO.StringIO() try: try: exec request in {}, {} except: print traceback.print_exc(100) finally: sys.stderr = stderr sys.stdout = stdout return fakefile.getvalue() main() PK!Hz ftp.pyonu[ ^c@sddlZddlZddlZddlTdZdZedZedZdZdZd a d Z d Z d Z d Z dZedS(iN(t*iiiiPcCstjd}t|dS(Ni(tsystargvtcontrol(thostname((s(/usr/lib64/python2.7/Demo/sockets/ftp.pytmain's cCsttt}|j|tf|jd}d}xt|}|dkrVPn|dkrt|t|}d}n|st ||}nt }|sPn|j |dq:WdS(Ntrt221tEOFt150s (RR( tsockettAF_INETt SOCK_STREAMtconnecttFTP_PORTtmakefiletNonetgetreplytgetdatat newdataportt getcommandtsend(RtstfRtcodetcmd((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyR.s$       icCsdtt}tddattt}|jtt|f|jdt ||||S(Nii( tnextportt FTP_DATA_PORTR R R tbindt gethostbynamet gethostnametlistent sendportcmd(RRtportR((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyRMs  c Cst}t|}tj|d}t|dt|dg}||}dtj|d}|j|dt|} dS(Nt.isPORT t,s (RRtstringt splitfieldstreprt joinfieldsRR( RRR!RthostaddrthbytestpbytestbytesRR((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyR Zs    cCs|j}|sdS|G|d }|dd!dkrxH|j}|sPPn|G|d |kr:|dd!dkr:Pq:q:Wn|S(NRiit-(treadline(RtlineR((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyRks   # cCsUdGH|j\}}dGHx-|jt}|s8Pntjj|qWdGHdS(Ns(accepting data connection)s(data connection accepted)s(end of data connection)(taccepttrecvtBUFSIZERtstdouttwrite(Rtconnthosttdata((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyR{scCs:y!xtd}|r|SqWWntk r5dSXdS(Nsftp.py> t(t raw_inputtEOFError(R.((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyRs   (RtposixR$R R1RRRRRRR RRR(((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyts$        PK!dBT77 rpythond.pyonu[ Afc@sWddlZddlTddlZddlZdZdZdZdZedS(iN(t*iicCsttjdkr1tttjd}nt}ttt}|j d|f|j dx||j \}\}}dG|G|GHd}x'|j t }|sPn||}qWt|}|j||jqiWdS(Nits connected by(tlentsystargvtinttevaltPORTtsockettAF_INETt SOCK_STREAMtbindtlistentaccepttrecvtBUFSIZEtexecutetsendtclose(tporttstconnt remotehostt remoteporttrequesttdatatreply((s-/usr/lib64/python2.7/Demo/sockets/rpythond.pytmains$    cBsvej}ej}eje_e_}z*y|iiUWnHejdnXWd|e_|e_X|jS(Nid(RtstdouttstderrtStringIOt tracebackt print_exctgetvalue(RRRtfakefile((s-/usr/lib64/python2.7/Demo/sockets/rpythond.pyR%s    (RRRRRRRR(((s-/usr/lib64/python2.7/Demo/sockets/rpythond.pyts      PK!S(S( gopher.pycnu[ Afc@sddlZddlZddlZddlZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZi dd6dd6dd6dd6dd 6dd 6dd 6dd 6dd 6dd6dd6dd6ZdZdZdZd Zd!Zd"Zd#Zd$Zd%Zd&Zd'Zd(Zd)Z d*Z!d+Z"d,Z#i ed6ed6e"d 6e"d 6ed 6e d 6e!d 6e"d6e#d6Z$d-d3d.YZ%d/d4d0YZ&d1Z'd2Z(e(dS(5iNtsgopher.micro.umn.eduiFt0t1t2t3t4t5t6t7t8t9t+tssssssss ssss ss s cCsh|st}n*t|tdkr9tj|}ntjtjtj}|j||f|S(NR(tDEF_PORTttypetstringtatoitsockettAF_INETt SOCK_STREAMtconnect(thosttportR ((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt open_socket)s cCs:t||}|j|t|jd|jdS(Nitr(RtsendtCRLFtshutdowntmakefile(tselectorRRR ((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt send_request3s cCs)t|||}g}x|j}|s6dGHPn|dtkrS|d }n|dtkrp|d }n|dkrPn|sdGHqn|d}tj|dt}t|dkrd |fGHqnt|dkrd |dfGHn|jd||j|qW|j |S( Ns(Unexpected EOF from server)iit.s(Empty line from server)iiis(Bad line from server: %r)s(Extra info from server: %r)( RtreadlineRRt splitfieldstTABtlentinserttappendtclose(RRRtftlisttlinettypechartparts((s+/usr/lib64/python2.7/Demo/sockets/gopher.pytget_menu:s6       cCs g}t||||j|S(N(tget_alt_textfileR%(RRRR(((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt get_textfileXscCst|||}x|j}|s0dGHPn|dtkrM|d }n|dtkrj|d }n|dkrzPn|d dkr|d}n||qW|jdS(Ns(Unexpected EOF from server)iiRis..i(RR RR&(RRRtfuncR'R)((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR-^s      cCs,t|||}|j}|j|S(N(RtreadR&(RRRR'tdata((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt get_binaryqs  cCs@t|||}x'|j|}|s.Pn||qWdS(N(RR0(RRRR/t blocksizeR'R1((s+/usr/lib64/python2.7/Demo/sockets/gopher.pytget_alt_binaryxs cGst}t}t}t|}|dkrA|drA|d}n|dkrd|drd|d}n|dkr|dr|d}n|dkrtdnyt|||WnAtjk r}dG|GHtj dnt k rdGHnXdS(Niiiis too many argss Socket error:s [Goodbye]( t DEF_SELECTORtDEF_HOSTR R#t RuntimeErrort browse_menuRterrortsystexittKeyboardInterrupt(targsRRRtntmsg((s+/usr/lib64/python2.7/Demo/sockets/gopher.pytbrowsers&        cCst|||}xdGHdGt|GHdG|GdG|GHHxtt|D]u}||}|d|d}}tjt|dddG|Gtj|rt|GHqNd t|d GHqNWHxytd }Wnt k rHdSX|sdSytj |} Wntj k r,d GHqnXd| koJt|knsZd GHqnPqW|| d}|d}|dd!\} } } t j|rt |} y| | | | Wqt tjfk rdGtjGdGtjGHqXqdGHqWdS(Ns----- MENU -----s Selector:sHost:s Port:iiit:ssChoice [CR == up a level]: s#Choice must be a number; try again:sChoice out of range; try again:iis***sUnsupported object type(R,treprtrangeR#Rtrjustttypenamethas_keyt raw_inputtEOFErrorRt atoi_errort typebrowsertIOErrorRR9R:texc_typet exc_value(RRRR(tititemR*t descriptiontstrtchoicet i_selectorti_hostti_portt browserfunc((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR8sR "  "  cCsd}y8tjdd}t|}t||||jWntk r\}dG|GHnX|rp|jnt}|sdSt|}yt||||jdGHWntk r}dG|GHnX|jdS(Ns ${PAGER-more}twsIOError:sDone.( tNonetostpopent SaveLinesR-twritelnRLR&t open_savefile(RRRtxtpR?R'((s+/usr/lib64/python2.7/Demo/sockets/gopher.pytbrowse_textfiles&       cCsxdGHdGt|GHdG|GdG|GHHytd}Wntk rNHPnXtj|}|shPnd|krdGHqnt|t|||qWdS(Ns----- SEARCH -----s Selector:sHost:s Port:sQuery [CR == up a level]: s s"Sorry, queries cannot contain tabs(RCRHRIRtstripR8R"(RRRtquery((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt browse_searchs"  cCsp|rdGt|GHnt|tdkr?t|}ntjd|d|}|rldG|GHndS(Ns Log in asRsset -x; exec telnet t s Exit status:(RCRRZtsystem(RRRtsts((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt browse_telnetscCsFt}|sdSt|}t||||jd|jdS(Niii (R^tSaveWithProgressR4twriteR&(RRRR'R_((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt browse_binarys   cCst|||dS(N(Rk(RRR((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt browse_soundsR\cBs#eZdZdZdZRS(cCs ||_dS(N(R'(tselfR'((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt__init__scCs|jj|ddS(Ns (R'Rj(RmR)((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR]scCs%|jj}|r!dG|GHndS(Ns Exit status:(R'R&(RmRg((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR&s(t__name__t __module__RnR]R&(((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR\s  RicBs#eZdZdZdZRS(cCs ||_dS(N(R'(RmR'((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyRnscCs1tjjdtjj|jj|dS(Nt#(R:tstdoutRjtflushR'(RmR1((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyRjs cCs&H|jj}|r"dG|GHndS(Ns Exit status:(R'R&(RmRg((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR& s(RoRpRnRjR&(((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyRis  cCs2ytd}Wntk r%HdSXtj|}|s?dS|ddkrtj|d}ytj|d}Wn'tk r}t|GdG|GHdSXdGt|GdGH|S|dd krtj j |}nyt |d}Wn'tk r}t|GdG|GHdSXd Gt|GdGH|S( Ns<Save as file [CR == don't save; |pipeline or ~user/... OK]: it|iRXRAsPiping throughs...t~s Saving to( RHRIRYRRbRZR[RLRCtpatht expandusertopen(tsavefiletcmdR`R?R'((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR^'s6  cCs tjdr"dGHtjdntjdrWttjdtjdtjdntjdry-tjtjd}d}tjd}Wn4tjk rtjd}tjd}d}nXt|||n+tjdrtdtjdntdS(Nis(usage: gopher [ [selector] host [port] ]iiiR(R:targvR;R@RRRJ(RRR((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyttestEs$  (     ((()RR:RZRR5R6R t T_TEXTFILEtT_MENUtT_CSOtT_ERRORtT_BINHEXtT_DOSt T_UUENCODEtT_SEARCHtT_TELNETtT_BINARYt T_REDUNDANTtT_SOUNDRFRR"RRR,R.R-R2R4R@R8RaRdRhRkRlRKR\RiR^R|(((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyts\           .      PK!Hz ftp.pycnu[ ^c@sddlZddlZddlZddlTdZdZedZedZdZdZd a d Z d Z d Z d Z dZedS(iN(t*iiiiPcCstjd}t|dS(Ni(tsystargvtcontrol(thostname((s(/usr/lib64/python2.7/Demo/sockets/ftp.pytmain's cCsttt}|j|tf|jd}d}xt|}|dkrVPn|dkrt|t|}d}n|st ||}nt }|sPn|j |dq:WdS(Ntrt221tEOFt150s (RR( tsockettAF_INETt SOCK_STREAMtconnecttFTP_PORTtmakefiletNonetgetreplytgetdatat newdataportt getcommandtsend(RtstfRtcodetcmd((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyR.s$       icCsdtt}tddattt}|jtt|f|jdt ||||S(Nii( tnextportt FTP_DATA_PORTR R R tbindt gethostbynamet gethostnametlistent sendportcmd(RRtportR((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyRMs  c Cst}t|}tj|d}t|dt|dg}||}dtj|d}|j|dt|} dS(Nt.isPORT t,s (RRtstringt splitfieldstreprt joinfieldsRR( RRR!RthostaddrthbytestpbytestbytesRR((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyR Zs    cCs|j}|sdS|G|d }|dd!dkrxH|j}|sPPn|G|d |kr:|dd!dkr:Pq:q:Wn|S(NRiit-(treadline(RtlineR((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyRks   # cCsUdGH|j\}}dGHx-|jt}|s8Pntjj|qWdGHdS(Ns(accepting data connection)s(data connection accepted)s(end of data connection)(taccepttrecvtBUFSIZERtstdouttwrite(Rtconnthosttdata((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyR{scCs:y!xtd}|r|SqWWntk r5dSXdS(Nsftp.py> t(t raw_inputtEOFError(R.((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyRs   (RtposixR$R R1RRRRRRR RRR(((s(/usr/lib64/python2.7/Demo/sockets/ftp.pyts$        PK!Se rpython.pycnu[ Afc@sBddlZddlZddlTdZdZdZedS(iN(t*iicCs ttjdkr*dGHtjdntjd}t}tj|d}|dkrtj||d}|| }ntjtjd}t t t }|j ||f|j ||jdd}x'|jt}|sPn||}qW|GdS(Nisusage: rpython host commandiit:it(tlentsystargvtexittPORTtstringtfindtatoitjointsockettAF_INETt SOCK_STREAMtconnecttsendtshutdowntrecvtBUFSIZE(thosttporttitcommandtstreplytdata((s,/usr/lib64/python2.7/Demo/sockets/rpython.pytmain s*     (RRR RRR(((s,/usr/lib64/python2.7/Demo/sockets/rpython.pyts    PK!FG udpecho.pycnu[ Afc@sQddlZddlTd ZdZdZdZdZd ZedS( iN(t*iPiicCsdttjdkrtntjddkr<tn$tjddkrYtntdS(Niis-ss-c(tlentsystargvtusagetservertclient(((s,/usr/lib64/python2.7/Demo/sockets/udpecho.pytmains   cCs'tjt_dGHdGHtjddS(Ns,Usage: udpecho -s [port] (server)s,or: udpecho -c host [port] s    PK!\-unixclient.pycnu[ ^c@seddlTdZeeeZejeejdejdZej dGe eGHdS(i(t*s unix-sockets Hello, worlditReceivedN( tsockettFILEtAF_UNIXt SOCK_STREAMtstconnecttsendtrecvtdatatclosetrepr(((s//usr/lib64/python2.7/Demo/sockets/unixclient.pyts    PK!'}&QQunixserver.pycnu[ ^c@sddlZddlTdZeeeZejedejdGHejdej \Z Z x0e re j dZesPne jeqmWe jejedS(iN(t*s unix-socketsSock name is: [t]ii(tostsockettFILEtAF_UNIXt SOCK_STREAMtstbindt getsocknametlistentaccepttconntaddrtTruetrecvtdatatsendtclosetunlink(((s//usr/lib64/python2.7/Demo/sockets/unixserver.pyts      PK!Z6qA throughput.pyonu[ Afc@s]ddlZddlZddlTd ZdZdZdZdZd ZedS( iN(t*iPi*icCsdttjdkrtntjddkr<tn$tjddkrYtntdS(Niis-ss-c(tlentsystargvtusagetservertclient(((s//usr/lib64/python2.7/Demo/sockets/throughput.pytmains   cCs'tjt_dGHdGHtjddS(Ns*Usage: (on host_A) throughput -s [port]s7and then: (on host_B) throughput -c count host_A [port]i(Rtstderrtstdouttexit(((s//usr/lib64/python2.7/Demo/sockets/throughput.pyR"s cCsttjdkr+ttjd}nt}ttt}|jd|f|j ddGHxg|j \}\}}x |j t }|sPn~qW|j d|jdG|GdG|GHqhWdS(NitisServer ready...sOK s Done withtport(RRRtevaltMY_PORTtsockettAF_INETt SOCK_STREAMtbindtlistentaccepttrecvtBUFSIZEtsendtclose(R tstconnthostt remoteporttdata((s//usr/lib64/python2.7/Demo/sockets/throughput.pyR)s"   c Csttjdkrtntttjd}tjd}ttjdkrpttjd}nt}dtdd}tj}t t t }tj}|j ||ftj}d}x'||kr|d}|j |qW|jdtj} |jt} tj} | GHdG|G|G|G| G| GHd G||G||G| |G| | GHd G| |GHd Gtt|d | |dGd GHdS(Niiitxis is Raw timers:s Intervals:sTotal:s Throughput:gMbP?sK/sec.(RRRRtintR RRttimeRRRtconnectRtshutdownRtround( tcountRR ttestdatatt1Rtt2tt3titt4Rtt5((s//usr/lib64/python2.7/Demo/sockets/throughput.pyR>s6         % !iz( RR RRRRRRR(((s//usr/lib64/python2.7/Demo/sockets/throughput.pyts    PK!` finger.pynuȯ#! /usr/bin/python2.7 # Python interface to the Internet finger daemon. # # Usage: finger [options] [user][@host] ... # # If no host is given, the finger daemon on the local host is contacted. # Options are passed uninterpreted to the finger daemon! import sys, string from socket import * # Hardcode the number of the finger port here. # It's not likely to change soon... # FINGER_PORT = 79 # Function to do one remote finger invocation. # Output goes directly to stdout (although this can be changed). # def finger(host, args): s = socket(AF_INET, SOCK_STREAM) s.connect((host, FINGER_PORT)) s.send(args + '\n') while 1: buf = s.recv(1024) if not buf: break sys.stdout.write(buf) sys.stdout.flush() # Main function: argument parsing. # def main(): options = '' i = 1 while i < len(sys.argv) and sys.argv[i][:1] == '-': options = options + sys.argv[i] + ' ' i = i+1 args = sys.argv[i:] if not args: args = [''] for arg in args: if '@' in arg: at = string.index(arg, '@') host = arg[at+1:] arg = arg[:at] else: host = '' finger(host, options + arg) # Call the main function. # main() PK!Z6qA throughput.pycnu[ Afc@s]ddlZddlZddlTd ZdZdZdZdZd ZedS( iN(t*iPi*icCsdttjdkrtntjddkr<tn$tjddkrYtntdS(Niis-ss-c(tlentsystargvtusagetservertclient(((s//usr/lib64/python2.7/Demo/sockets/throughput.pytmains   cCs'tjt_dGHdGHtjddS(Ns*Usage: (on host_A) throughput -s [port]s7and then: (on host_B) throughput -c count host_A [port]i(Rtstderrtstdouttexit(((s//usr/lib64/python2.7/Demo/sockets/throughput.pyR"s cCsttjdkr+ttjd}nt}ttt}|jd|f|j ddGHxg|j \}\}}x |j t }|sPn~qW|j d|jdG|GdG|GHqhWdS(NitisServer ready...sOK s Done withtport(RRRtevaltMY_PORTtsockettAF_INETt SOCK_STREAMtbindtlistentaccepttrecvtBUFSIZEtsendtclose(R tstconnthostt remoteporttdata((s//usr/lib64/python2.7/Demo/sockets/throughput.pyR)s"   c Csttjdkrtntttjd}tjd}ttjdkrpttjd}nt}dtdd}tj}t t t }tj}|j ||ftj}d}x'||kr|d}|j |qW|jdtj} |jt} tj} | GHdG|G|G|G| G| GHd G||G||G| |G| | GHd G| |GHd Gtt|d | |dGd GHdS(Niiitxis is Raw timers:s Intervals:sTotal:s Throughput:gMbP?sK/sec.(RRRRtintR RRttimeRRRtconnectRtshutdownRtround( tcountRR ttestdatatt1Rtt2tt3titt4Rtt5((s//usr/lib64/python2.7/Demo/sockets/throughput.pyR>s6         % !iz( RR RRRRRRR(((s//usr/lib64/python2.7/Demo/sockets/throughput.pyts    PK!Yڎee telnet.pycnu[ Afc@sddlZddlZddlZddlTdZedZedZedZedZ edZ d Z y e Wne k rnXdS( iN(t*iiiiiic Cs!tjd}yt|}Wn9tk rXtjjtjddtjdnXttjdkr~tjd}nd}d|d kodknrt|}nHyt |d}Wn2tk rtjj|dtjdnXt t t }y|j ||fWn>tk ra}tjjd t|d tjdnXtj}|d krxtjj}|j|q}Wn}d }d } xn|jt} | stjjd tj|dtjdnd } x| D]} | r2t| GH|j| | d } q|rd }| tkrW| | } q| ttfkr| tkr|dGndGtt} q| ttfkr| tkrdGndGtt} qdGt| GHq| tkrd}dGq| | } qWtjj| tjjqWdS(Nis: bad host name ittelnett0t9ttcps: bad tcp service name sconnect failed: s its(Closed by remote host) i s(DO)s(DONT)s(WILL)s(WONT)s (command)s(IAC)(tsystargvt gethostbynameterrortstderrtwritetexittlentevalt getservbynametsockettAF_INETt SOCK_STREAMtconnecttreprtposixtforktstdintreadlinetsendtrecvtBUFSIZEtkilltordtIACtDOtDONTtWONTtWILLtstdouttflush( thostthostaddrtservnametporttstmsgtpidtlinetiactopttdatat cleandatatc((s+/usr/lib64/python2.7/Demo/sockets/telnet.pytmains|                ( RRttimeRRtchrRR RR!R"R2tKeyboardInterrupt(((s+/usr/lib64/python2.7/Demo/sockets/telnet.pyts$       M  PK!radio.pynu[# Receive UDP packets transmitted by a broadcasting service MYPORT = 50000 import sys from socket import * s = socket(AF_INET, SOCK_DGRAM) s.bind(('', MYPORT)) while 1: data, wherefrom = s.recvfrom(1500, 0) sys.stderr.write(repr(wherefrom) + '\n') sys.stdout.write(data) PK!q< finger.pycnu[ Afc@sEddlZddlZddlTdZdZdZedS(iN(t*iOcCstttt}|j|tf|j|dx-|jd}|sOPntjj |q6Wtjj dS(Ns i( tsockettAF_INETt SOCK_STREAMtconnectt FINGER_PORTtsendtrecvtsyststdouttwritetflush(thosttargststbuf((s+/usr/lib64/python2.7/Demo/sockets/finger.pytfingerscCsd}d}xO|ttjkr]tj|d dkr]|tj|d}|d}qWtj|}|s}dg}nx^|D]V}d|krtj|d}||d}|| }nd}t|||qWdS(Ntit-t t@(tlenRtargvtstringtindexR(toptionstiR targtatR ((s+/usr/lib64/python2.7/Demo/sockets/finger.pytmain%s/     (RRRRRR(((s+/usr/lib64/python2.7/Demo/sockets/finger.pyt s   PK!ua udpecho.pynuȯ#! /usr/bin/python2.7 # Client and server for udp (datagram) echo. # # Usage: udpecho -s [port] (to start a server) # or: udpecho -c host [port] 2: port = eval(sys.argv[2]) else: port = ECHO_PORT s = socket(AF_INET, SOCK_DGRAM) s.bind(('', port)) print 'udp echo server ready' while 1: data, addr = s.recvfrom(BUFSIZE) print 'server received %r from %r' % (data, addr) s.sendto(data, addr) def client(): if len(sys.argv) < 3: usage() host = sys.argv[2] if len(sys.argv) > 3: port = eval(sys.argv[3]) else: port = ECHO_PORT addr = host, port s = socket(AF_INET, SOCK_DGRAM) s.bind(('', 0)) print 'udp echo client ready, reading stdin' while 1: line = sys.stdin.readline() if not line: break s.sendto(line, addr) data, fromaddr = s.recvfrom(BUFSIZE) print 'client received %r from %r' % (data, fromaddr) main() PK!ⱈmcast.pynuȯ#! /usr/bin/python2.7 # # Send/receive UDP multicast packets. # Requires that your OS kernel supports IP multicast. # # Usage: # mcast -s (sender, IPv4) # mcast -s -6 (sender, IPv6) # mcast (receivers, IPv4) # mcast -6 (receivers, IPv6) MYPORT = 8123 MYGROUP_4 = '225.0.0.250' MYGROUP_6 = 'ff15:7079:7468:6f6e:6465:6d6f:6d63:6173' MYTTL = 1 # Increase to reach other networks import time import struct import socket import sys def main(): group = MYGROUP_6 if "-6" in sys.argv[1:] else MYGROUP_4 if "-s" in sys.argv[1:]: sender(group) else: receiver(group) def sender(group): addrinfo = socket.getaddrinfo(group, None)[0] s = socket.socket(addrinfo[0], socket.SOCK_DGRAM) # Set Time-to-live (optional) ttl_bin = struct.pack('@i', MYTTL) if addrinfo[0] == socket.AF_INET: # IPv4 s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, ttl_bin) else: s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_MULTICAST_HOPS, ttl_bin) while True: data = repr(time.time()) s.sendto(data + '\0', (addrinfo[4][0], MYPORT)) time.sleep(1) def receiver(group): # Look up multicast group address in name server and find out IP version addrinfo = socket.getaddrinfo(group, None)[0] # Create a socket s = socket.socket(addrinfo[0], socket.SOCK_DGRAM) # Allow multiple copies of this program on one machine # (not strictly needed) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # Bind it to the port s.bind(('', MYPORT)) group_bin = socket.inet_pton(addrinfo[0], addrinfo[4][0]) # Join group if addrinfo[0] == socket.AF_INET: # IPv4 mreq = group_bin + struct.pack('=I', socket.INADDR_ANY) s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) else: mreq = group_bin + struct.pack('@I', 0) s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq) # Loop, printing any data we receive while True: data, sender = s.recvfrom(1500) while data[-1:] == '\0': data = data[:-1] # Strip trailing \0's print (str(sender) + ' ' + repr(data)) if __name__ == '__main__': main() PK!dBT77 rpythond.pycnu[ Afc@sWddlZddlTddlZddlZdZdZdZdZedS(iN(t*iicCsttjdkr1tttjd}nt}ttt}|j d|f|j dx||j \}\}}dG|G|GHd}x'|j t }|sPn||}qWt|}|j||jqiWdS(Nits connected by(tlentsystargvtinttevaltPORTtsockettAF_INETt SOCK_STREAMtbindtlistentaccepttrecvtBUFSIZEtexecutetsendtclose(tporttstconnt remotehostt remoteporttrequesttdatatreply((s-/usr/lib64/python2.7/Demo/sockets/rpythond.pytmains$    cBsvej}ej}eje_e_}z*y|iiUWnHejdnXWd|e_|e_X|jS(Nid(RtstdouttstderrtStringIOt tracebackt print_exctgetvalue(RRRtfakefile((s-/usr/lib64/python2.7/Demo/sockets/rpythond.pyR%s    (RRRRRRRR(((s-/usr/lib64/python2.7/Demo/sockets/rpythond.pyts      PK!S(S( gopher.pyonu[ Afc@sddlZddlZddlZddlZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZi dd6dd6dd6dd6dd 6dd 6dd 6dd 6dd 6dd6dd6dd6ZdZdZdZd Zd!Zd"Zd#Zd$Zd%Zd&Zd'Zd(Zd)Z d*Z!d+Z"d,Z#i ed6ed6e"d 6e"d 6ed 6e d 6e!d 6e"d6e#d6Z$d-d3d.YZ%d/d4d0YZ&d1Z'd2Z(e(dS(5iNtsgopher.micro.umn.eduiFt0t1t2t3t4t5t6t7t8t9t+tssssssss ssss ss s cCsh|st}n*t|tdkr9tj|}ntjtjtj}|j||f|S(NR(tDEF_PORTttypetstringtatoitsockettAF_INETt SOCK_STREAMtconnect(thosttportR ((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt open_socket)s cCs:t||}|j|t|jd|jdS(Nitr(RtsendtCRLFtshutdowntmakefile(tselectorRRR ((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt send_request3s cCs)t|||}g}x|j}|s6dGHPn|dtkrS|d }n|dtkrp|d }n|dkrPn|sdGHqn|d}tj|dt}t|dkrd |fGHqnt|dkrd |dfGHn|jd||j|qW|j |S( Ns(Unexpected EOF from server)iit.s(Empty line from server)iiis(Bad line from server: %r)s(Extra info from server: %r)( RtreadlineRRt splitfieldstTABtlentinserttappendtclose(RRRtftlisttlinettypechartparts((s+/usr/lib64/python2.7/Demo/sockets/gopher.pytget_menu:s6       cCs g}t||||j|S(N(tget_alt_textfileR%(RRRR(((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt get_textfileXscCst|||}x|j}|s0dGHPn|dtkrM|d }n|dtkrj|d }n|dkrzPn|d dkr|d}n||qW|jdS(Ns(Unexpected EOF from server)iiRis..i(RR RR&(RRRtfuncR'R)((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR-^s      cCs,t|||}|j}|j|S(N(RtreadR&(RRRR'tdata((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt get_binaryqs  cCs@t|||}x'|j|}|s.Pn||qWdS(N(RR0(RRRR/t blocksizeR'R1((s+/usr/lib64/python2.7/Demo/sockets/gopher.pytget_alt_binaryxs cGst}t}t}t|}|dkrA|drA|d}n|dkrd|drd|d}n|dkr|dr|d}n|dkrtdnyt|||WnAtjk r}dG|GHtj dnt k rdGHnXdS(Niiiis too many argss Socket error:s [Goodbye]( t DEF_SELECTORtDEF_HOSTR R#t RuntimeErrort browse_menuRterrortsystexittKeyboardInterrupt(targsRRRtntmsg((s+/usr/lib64/python2.7/Demo/sockets/gopher.pytbrowsers&        cCst|||}xdGHdGt|GHdG|GdG|GHHxtt|D]u}||}|d|d}}tjt|dddG|Gtj|rt|GHqNd t|d GHqNWHxytd }Wnt k rHdSX|sdSytj |} Wntj k r,d GHqnXd| koJt|knsZd GHqnPqW|| d}|d}|dd!\} } } t j|rt |} y| | | | Wqt tjfk rdGtjGdGtjGHqXqdGHqWdS(Ns----- MENU -----s Selector:sHost:s Port:iiit:ssChoice [CR == up a level]: s#Choice must be a number; try again:sChoice out of range; try again:iis***sUnsupported object type(R,treprtrangeR#Rtrjustttypenamethas_keyt raw_inputtEOFErrorRt atoi_errort typebrowsertIOErrorRR9R:texc_typet exc_value(RRRR(tititemR*t descriptiontstrtchoicet i_selectorti_hostti_portt browserfunc((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR8sR "  "  cCsd}y8tjdd}t|}t||||jWntk r\}dG|GHnX|rp|jnt}|sdSt|}yt||||jdGHWntk r}dG|GHnX|jdS(Ns ${PAGER-more}twsIOError:sDone.( tNonetostpopent SaveLinesR-twritelnRLR&t open_savefile(RRRtxtpR?R'((s+/usr/lib64/python2.7/Demo/sockets/gopher.pytbrowse_textfiles&       cCsxdGHdGt|GHdG|GdG|GHHytd}Wntk rNHPnXtj|}|shPnd|krdGHqnt|t|||qWdS(Ns----- SEARCH -----s Selector:sHost:s Port:sQuery [CR == up a level]: s s"Sorry, queries cannot contain tabs(RCRHRIRtstripR8R"(RRRtquery((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt browse_searchs"  cCsp|rdGt|GHnt|tdkr?t|}ntjd|d|}|rldG|GHndS(Ns Log in asRsset -x; exec telnet t s Exit status:(RCRRZtsystem(RRRtsts((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt browse_telnetscCsFt}|sdSt|}t||||jd|jdS(Niii (R^tSaveWithProgressR4twriteR&(RRRR'R_((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt browse_binarys   cCst|||dS(N(Rk(RRR((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt browse_soundsR\cBs#eZdZdZdZRS(cCs ||_dS(N(R'(tselfR'((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyt__init__scCs|jj|ddS(Ns (R'Rj(RmR)((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR]scCs%|jj}|r!dG|GHndS(Ns Exit status:(R'R&(RmRg((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR&s(t__name__t __module__RnR]R&(((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR\s  RicBs#eZdZdZdZRS(cCs ||_dS(N(R'(RmR'((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyRnscCs1tjjdtjj|jj|dS(Nt#(R:tstdoutRjtflushR'(RmR1((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyRjs cCs&H|jj}|r"dG|GHndS(Ns Exit status:(R'R&(RmRg((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR& s(RoRpRnRjR&(((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyRis  cCs2ytd}Wntk r%HdSXtj|}|s?dS|ddkrtj|d}ytj|d}Wn'tk r}t|GdG|GHdSXdGt|GdGH|S|dd krtj j |}nyt |d}Wn'tk r}t|GdG|GHdSXd Gt|GdGH|S( Ns<Save as file [CR == don't save; |pipeline or ~user/... OK]: it|iRXRAsPiping throughs...t~s Saving to( RHRIRYRRbRZR[RLRCtpatht expandusertopen(tsavefiletcmdR`R?R'((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyR^'s6  cCs tjdr"dGHtjdntjdrWttjdtjdtjdntjdry-tjtjd}d}tjd}Wn4tjk rtjd}tjd}d}nXt|||n+tjdrtdtjdntdS(Nis(usage: gopher [ [selector] host [port] ]iiiR(R:targvR;R@RRRJ(RRR((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyttestEs$  (     ((()RR:RZRR5R6R t T_TEXTFILEtT_MENUtT_CSOtT_ERRORtT_BINHEXtT_DOSt T_UUENCODEtT_SEARCHtT_TELNETtT_BINARYt T_REDUNDANTtT_SOUNDRFRR"RRR,R.R-R2R4R@R8RaRdRhRkRlRKR\RiR^R|(((s+/usr/lib64/python2.7/Demo/sockets/gopher.pyts\           .      PK!d php_sockets.hnu[PK!  unicast.pyonu[PK!)a radio.pyonu[PK!'}&QQunixserver.pyonu[PK!l unicast.pynu[PK!\-unixclient.pyonu[PK!߼U telnet.pynuȯPK!' #rpython.pynuȯPK![gyy &mcast.pyonu[PK!FG A/udpecho.pyonu[PK!$$ g7throughput.pynuȯPK!C ?broadcast.pynu[PK![gyy Amcast.pycnu[PK!^XXIftp.pynu[PK!j{ _Yechosvr.pynuȯPK!.)S;; {\echosvr.pyonu[PK!Yڎee _telnet.pyonu[PK!q< hfinger.pyonu[PK!vttTmREADMEnu[PK!.)S;; oechosvr.pycnu[PK!~hD7&7& tsgopher.pynuȯPK!Se rpython.pyonu[PK!It unixserver.pynu[PK!## Пbroadcast.pycnu[PK!IA} 0unixclient.pynu[PK!)a Uradio.pycnu[PK! eunicast.pycnu[PK!## hbroadcast.pyonu[PK!c ȩrpythond.pynuȯPK!Hz ftp.pyonu[PK!dBT77 rpythond.pyonu[PK!S(S( gopher.pycnu[PK!Hz ftp.pycnu[PK!Se Brpython.pycnu[PK!FG Sudpecho.pycnu[PK!\-yunixclient.pycnu[PK!'}&QQ_unixserver.pycnu[PK!Z6qA throughput.pyonu[PK!` finger.pynuȯPK!Z6qA throughput.pycnu[PK!Yڎee telnet.pycnu[PK!&radio.pynu[PK!q< 'finger.pycnu[PK!ua ,udpecho.pynuȯPK!ⱈ2mcast.pynuȯPK!dBT77 m;rpythond.pycnu[PK!S(S( @gopher.pyonu[PK// mi