今天尝试着仅使用单进程、单线程、不用协程就完成多任务的web服务器简单编程。问题多多,收获多多。首先放上核心代码

整体思路是没有问题的但是其间出现了很多小问题,这里就想记录一下:
1.程序一开始执行的时候,连接成功,但是无论怎么发数据,都接收不到

检查发现是代码中,由于一开始思路设计没有注意细节,.recv()中,没有设置参数。这是会产生异常的,导致收到数据和没有收到一样的结果—产生异常。
解决:通过打印异常e,得到如下结果,发现bug


通过这次粗心呢,其实也学到很多,首先使用time.sleep(),可以放慢过程,更好的测试程序;其次,是学会调试,应用try……exce框架的便利;最后,当然是提醒了我要注意编程习惯的良好养成。
2.然后,就是遇到的第二个问题,在调试助手上模拟的客户端断开连接之后,我的程序执行结果仍在输出
客户端没有数据到来,理论上,根据四次挥手,在程序中,断开连接的时候,应该是走到else,而不是except,因为recv_data应该是收到了,只不过是空字符串而已,那么,为什么会产生异常,认为是连接还在?反复检查代码之后,考虑可能是由于调试助手的原因,点击断开,是不是真正的断开了连接?事实证明我的猜想是正确的。是调试助手的小bug,需要把调试助手整个关闭,连接才真正断开,仅断开、关闭模拟客户端的界面,并没有真正关闭连接。最后,贴上让人感动的正确结果

技术
©2020 ioDraw All rights reserved
(精华)2020年6月26日 C#类库 DataTable(扩展方法)解决CardLayout布局时按钮先执行方法,后切换页面 企业面对SEM竞价和SEO要如何取舍?还是两者都做?浙大数据结构期中考试试题程序(进程)在操作系统中是如何存储、分配空间的分享一场黑客帝国代码雨脚本,简单好玩!C++超级大神欢迎微软当爸爸:请缨重操旧业写游戏代码少儿编程孩子的学习路线django不关闭CSRF中间件,自定义通过CSRF检测的post请求centos7部署springboot jar包