码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-11-05 18:50:36      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   os   sp   div   on   

 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(\r+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("\rRemote end closed connection; exiting.")
37                 break
38         sys.stdout.write("\rReceived :"+data)
39         sys.stdout.flush()
40         spin()
41     else:
42         print("\rProblem 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"\n")
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()

 

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

标签:style   blog   io   color   ar   os   sp   div   on   

原文地址:http://www.cnblogs.com/Simon-xm/p/4076668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!