单进程单线程实现

今天尝试着仅使用单进程、单线程、不用协程就完成多任务的web服务器简单编程。问题多多,收获多多。首先放上核心代码
多任务的实现
整体思路是没有问题的但是其间出现了很多小问题,这里就想记录一下:
1.程序一开始执行的时候,连接成功,但是无论怎么发数据,都接收不到
bug1
检查发现是代码中,由于一开始思路设计没有注意细节,.recv()中,没有设置参数。这是会产生异常的,导致收到数据和没有收到一样的结果—产生异常。
解决:通过打印异常e,得到如下结果,发现bug
resolve1
通过这次粗心呢,其实也学到很多,首先使用time.sleep(),可以放慢过程,更好的测试程序;其次,是学会调试,应用try……exce框架的便利;最后,当然是提醒了我要注意编程习惯的良好养成。
2.然后,就是遇到的第二个问题,在调试助手上模拟的客户端断开连接之后,我的程序执行结果仍在输出 客户端没有数据到来,理论上,根据四次挥手,在程序中,断开连接的时候,应该是走到else,而不是except,因为recv_data应该是收到了,只不过是空字符串而已,那么,为什么会产生异常,认为是连接还在?反复检查代码之后,考虑可能是由于调试助手的原因,点击断开,是不是真正的断开了连接?事实证明我的猜想是正确的。是调试助手的小bug,需要把调试助手整个关闭,连接才真正断开,仅断开、关闭模拟客户端的界面,并没有真正关闭连接。最后,贴上让人感动的正确结果
终于等到你,还好没放弃……

猜你喜欢

转载自blog.csdn.net/weixin_42526305/article/details/82975528
今日推荐