⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_soc.py

📁 minimal python variant for small footprint apps like embedded apps
💻 PY
字号:
# Not tested:#       socket.fromfd()#       sktobj.getsockopt()#       sktobj.recvfrom()#       sktobj.sendto()#       sktobj.setblocking()#       sktobj.setsockopt()#       sktobj.shutdown()from test_support import verbose, TestFailedimport socketimport osimport timeimport stringdef missing_ok(str):    try:        getattr(socket, str)    except AttributeError:        passtry: raise socket.errorexcept socket.error: print "socket.error"socket.AF_INETsocket.SOCK_STREAMsocket.SOCK_DGRAMsocket.SOCK_RAWsocket.SOCK_RDMsocket.SOCK_SEQPACKETfor optional in ("AF_UNIX",                 "SO_DEBUG", "SO_ACCEPTCONN", "SO_REUSEADDR", "SO_KEEPALIVE",                 "SO_DONTROUTE", "SO_BROADCAST", "SO_USELOOPBACK", "SO_LINGER",                 "SO_OOBINLINE", "SO_REUSEPORT", "SO_SNDBUF", "SO_RCVBUF",                 "SO_SNDLOWAT", "SO_RCVLOWAT", "SO_SNDTIMEO", "SO_RCVTIMEO",                 "SO_ERROR", "SO_TYPE", "SOMAXCONN",                 "MSG_OOB", "MSG_PEEK", "MSG_DONTROUTE", "MSG_EOR",                 "MSG_TRUNC", "MSG_CTRUNC", "MSG_WAITALL", "MSG_BTAG",                 "MSG_ETAG",                 "SOL_SOCKET",                 "IPPROTO_IP", "IPPROTO_ICMP", "IPPROTO_IGMP",                 "IPPROTO_GGP", "IPPROTO_TCP", "IPPROTO_EGP",                 "IPPROTO_PUP", "IPPROTO_UDP", "IPPROTO_IDP",                 "IPPROTO_HELLO", "IPPROTO_ND", "IPPROTO_TP",                 "IPPROTO_XTP", "IPPROTO_EON", "IPPROTO_BIP",                 "IPPROTO_RAW", "IPPROTO_MAX",                 "IPPORT_RESERVED", "IPPORT_USERRESERVED",                 "INADDR_ANY", "INADDR_BROADCAST", "INADDR_LOOPBACK",                 "INADDR_UNSPEC_GROUP", "INADDR_ALLHOSTS_GROUP",                 "INADDR_MAX_LOCAL_GROUP", "INADDR_NONE",                 "IP_OPTIONS", "IP_HDRINCL", "IP_TOS", "IP_TTL",                 "IP_RECVOPTS", "IP_RECVRETOPTS", "IP_RECVDSTADDR",                 "IP_RETOPTS", "IP_MULTICAST_IF", "IP_MULTICAST_TTL",                 "IP_MULTICAST_LOOP", "IP_ADD_MEMBERSHIP",                 "IP_DROP_MEMBERSHIP",                 ):    missing_ok(optional)socktype = socket.SocketTypehostname = socket.gethostname()ip = socket.gethostbyname(hostname)hname, aliases, ipaddrs = socket.gethostbyaddr(ip)all_host_names = [hname] + aliasesif verbose:    print hostname    print ip    print hname, aliases, ipaddrs    print all_host_namesfor name in all_host_names:    if string.find(name, '.'):        breakelse:    print 'FQDN not found'print socket.getservbyname('telnet', 'tcp')try:    socket.getservbyname('telnet', 'udp')except socket.error:    passcanfork = hasattr(os, 'fork')try:    PORT = 50007    if not canfork or os.fork():        # parent is server        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        s.bind(hostname, PORT)        s.listen(1)        if verbose:            print 'parent accepting'        if canfork:            conn, addr = s.accept()            if verbose:                print 'connected by', addr            # couple of interesting tests while we've got a live socket            f = conn.fileno()            if verbose:                print 'fileno:', f            p = conn.getpeername()            if verbose:                print 'peer:', p            n = conn.getsockname()            if verbose:                print 'sockname:', n            f = conn.makefile()            if verbose:                print 'file obj:', f            while 1:                data = conn.recv(1024)                if not data:                    break                if verbose:                    print 'received:', data                conn.send(data)            conn.close()    else:        try:            # child is client            time.sleep(5)            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)            if verbose:                print 'child connecting'            s.connect(hostname, PORT)            msg = 'socket test'            s.send(msg)            data = s.recv(1024)            if msg <> data:                print 'parent/client mismatch'            s.close()        finally:            os._exit(1)except socket.error, msg:    raise TestFailed, msg

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -