blob: 6b45383ec4985f948ba8ead8c8b94afa9a3e3627 [file] [log] [blame]
Barry Warsawcf3d4b51997-01-03 20:03:32 +00001# Not tested:
2# socket.fromfd()
3# sktobj.getsockopt()
4# sktobj.recvfrom()
5# sktobj.sendto()
6# sktobj.setblocking()
7# sktobj.setsockopt()
8# sktobj.shutdown()
9
10
11from test_support import verbose
12import socket
13import os
14import time
15
16def missing_ok(str):
17 try:
18 getattr(socket, str)
19 except AttributeError:
20 pass
21
22print socket.error
23
24print socket.AF_INET
25
26print socket.SOCK_STREAM
27print socket.SOCK_DGRAM
28print socket.SOCK_RAW
29print socket.SOCK_RDM
30print socket.SOCK_SEQPACKET
31
32for optional in ("AF_UNIX",
33
34 "SO_DEBUG", "SO_ACCEPTCONN", "SO_REUSEADDR", "SO_KEEPALIVE",
35 "SO_DONTROUTE", "SO_BROADCAST", "SO_USELOOPBACK", "SO_LINGER",
36 "SO_OOBINLINE", "SO_REUSEPORT", "SO_SNDBUF", "SO_RCVBUF",
37 "SO_SNDLOWAT", "SO_RCVLOWAT", "SO_SNDTIMEO", "SO_RCVTIMEO",
38 "SO_ERROR", "SO_TYPE", "SOMAXCONN",
39
40 "MSG_OOB", "MSG_PEEK", "MSG_DONTROUTE", "MSG_EOR",
41 "MSG_TRUNC", "MSG_CTRUNC", "MSG_WAITALL", "MSG_BTAG",
42 "MSG_ETAG",
43
44 "SOL_SOCKET",
45
46 "IPPROTO_IP", "IPPROTO_ICMP", "IPPROTO_IGMP",
47 "IPPROTO_GGP", "IPPROTO_TCP", "IPPROTO_EGP",
48 "IPPROTO_PUP", "IPPROTO_UDP", "IPPROTO_IDP",
49 "IPPROTO_HELLO", "IPPROTO_ND", "IPPROTO_TP",
50 "IPPROTO_XTP", "IPPROTO_EON", "IPPROTO_BIP",
51 "IPPROTO_RAW", "IPPROTO_MAX",
52
53 "IPPORT_RESERVED", "IPPORT_USERRESERVED",
54
55 "INADDR_ANY", "INADDR_BROADCAST", "INADDR_LOOPBACK",
56 "INADDR_UNSPEC_GROUP", "INADDR_ALLHOSTS_GROUP",
57 "INADDR_MAX_LOCAL_GROUP", "INADDR_NONE",
58
59 "IP_OPTIONS", "IP_HDRINCL", "IP_TOS", "IP_TTL",
60 "IP_RECVOPTS", "IP_RECVRETOPTS", "IP_RECVDSTADDR",
61 "IP_RETOPTS", "IP_MULTICAST_IF", "IP_MULTICAST_TTL",
62 "IP_MULTICAST_LOOP", "IP_ADD_MEMBERSHIP",
63 "IP_DROP_MEMBERSHIP",
64 ):
65 missing_ok(optional)
66
67hostname = socket.gethostname()
68ip = socket.gethostbyname(hostname)
69hname, aliases, ipaddrs = socket.gethostbyaddr(ip)
70
71if verbose:
72 print hostname
73 print ip
74 print hname, aliases, ipaddrs
75
76if hostname <> hname:
77 print 'hostname mismatch'
78
79print socket.getservbyname('telnet', 'tcp')
80try:
81 socket.getservbyname('telnet', 'udp')
82except socket.error:
83 pass
84
85
86try:
87 PORT = 50007
88 if os.fork():
89 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
90 s.bind(hostname, PORT)
91 s.listen(1)
92 if verbose:
93 print 'parent accepting'
94 conn, addr = s.accept()
95 if verbose:
96 print 'connected by', addr
97 # couple of interesting tests while we've got a live socket
98 f = conn.fileno()
99 if verbose:
100 print 'fileno:', f
101 p = conn.getpeername()
102 if verbose:
103 print 'peer:', p
104 n = conn.getsockname()
105 if verbose:
106 print 'sockname:', n
107 f = conn.makefile()
108 if verbose:
109 print 'file obj:', f
110 while 1:
111 data = conn.recv(1024)
112 if not data:
113 break
114 if verbose:
115 print 'received:', data
116 conn.send(data)
117 conn.close()
118 else:
119 time.sleep(1)
120 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
121 if verbose:
122 print 'child connecting'
123 s.connect(hostname, PORT)
124 msg = 'socket test'
125 s.send(msg)
126 data = s.recv(1024)
127 if msg <> data:
128 print 'parent/client mismatch'
129 s.close()
130except socket.error:
131 pass