博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python CODE——Nonblocking I/O client AND Delaying Server
阅读量:5126 次
发布时间:2019-06-13

本文共 2172 字,大约阅读时间需要 7 分钟。

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,spindir12     spinstr='.'*spinpos+'|'+'.'*(spinsize-spinpos-1)13     sys.stdout.write('\r'+spinstr+'  ')14     sys.stdout.flush()15 16     spinpos+=spindir17     if spinpos<0:18         spindir=119         spinpos=120     elif spinpos>=spinsize:21         spinpos-=222         spindir=-123 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                 break38         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         raise17     except:18         traceback.print_exc()19         continue20 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                 break29             time.sleep(2)30     except (KeyboardInterrupt,SystemExit):31         raise32     except:33         traceback.print_exc()34 35     try:36         clientsock.close()37     except KeyboardInterrupt:38         raise39     except:40         traceback.print_exc()

 

转载于:https://www.cnblogs.com/Simon-xm/p/4076668.html

你可能感兴趣的文章
springboot No Identifier specified for entity的解决办法
查看>>
浅谈 unix, linux, ios, android 区别和联系
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
下一代操作系统与软件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Python IO模型
查看>>
DataGridView的行的字体颜色变化
查看>>
局域网内手机访问电脑网站注意几点
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>