• Python CODE——Nonblocking I/O client AND Delaying Server


     1 #!Nonblocking I/O - Chapter 5 -pollclient.py
     2 import socket,sys,select
     3 port=51423
     4 host='localhost'
     5 
     6 spinsize=10
     7 spinpos=0
     8 spindir=1
     9 
    10 def spin():
    11     global spinsize,spinpos,spindir
    12     spinstr='.'*spinpos+'|'+'.'*(spinsize-spinpos-1)
    13     sys.stdout.write('
    '+spinstr+'  ')
    14     sys.stdout.flush()
    15 
    16     spinpos+=spindir
    17     if spinpos<0:
    18         spindir=1
    19         spinpos=1
    20     elif spinpos>=spinsize:
    21         spinpos-=2
    22         spindir=-1
    23 
    24 sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    25 sock.connect((host,port))
    26 
    27 p=select.poll()
    28 p.register(sock.fileno(),select.POLLIN|select.POLLERR|select.POLLHUP)
    29 
    30 while True:
    31     results=p.poll(2002)
    32     if len(results):
    33         if results[0][1]==select.POLLIN:
    34             data=sock.recv(4096).decode()
    35             if not len(data):
    36                 print("
    Remote end closed connection; exiting.")
    37                 break
    38         sys.stdout.write("
    Received :"+data)
    39         sys.stdout.flush()
    40         spin()
    41     else:
    42         print("
    Problem occurred; exiting")
    43         sys.exit(0)
     1 #!Delaying Server - Chapter 5 -delayserver.py
     2 import socket,traceback,time
     3 
     4 host=""
     5 port=51423
     6 
     7 sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
     8 sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
     9 sock.bind((host,port))
    10 sock.listen(1)
    11 
    12 while True:
    13     try:
    14         clientsock,clientaddr= sock.accept()
    15     except KeyboardInterrupt:
    16         raise
    17     except:
    18         traceback.print_exc()
    19         continue
    20 
    21     try:
    22         print("Got connection from ",clientsock.getpeername)
    23         while True:
    24             try:
    25                 print(time.asctime().encode())
    26                 clientsock.sendall(time.asctime().encode()+b"
    ")
    27             except:
    28                 break
    29             time.sleep(2)
    30     except (KeyboardInterrupt,SystemExit):
    31         raise
    32     except:
    33         traceback.print_exc()
    34 
    35     try:
    36         clientsock.close()
    37     except KeyboardInterrupt:
    38         raise
    39     except:
    40         traceback.print_exc()
  • 相关阅读:
    Unix环境高级编程—进程关系
    如何学习CCIE
    Unix环境高级编程—进程控制(三)
    Unix环境高级编程—进程控制(二)
    _THROW 何解?
    Unix高级环境编程—进程控制(一)
    ifndef/define/endif 和 #ifdef 、#if 作用和用法
    内存MCE错误导致暴力扩充messages日志 以及chattr记录
    Intellij IDEA的安装和激活
    Xshell和Xftp间隔一段时间不操作就自动断开连接?
  • 原文地址:https://www.cnblogs.com/Simon-xm/p/4076668.html
Copyright © 2020-2023  润新知