Skip to content

Astronaut-lunikhod/FileWebServer

Repository files navigation

FileWebServer

类似于网盘的文件服务器

遇见的问题 1.上传文件的时候是什么样的请求格式。主要就是用一个boundary进行分割。

2.将上传的内容进行保存的时候会遇见一些特殊符号,而且不一定是十六进制,但是直接保存就行,注意,一定要全部都直接保存,不需要转换进制编码之类的。

3.一开始接收数据的时候,因为数据包会被切分为小个数据集进行发送,所以需要在得到content-length之后进行反复接收,避免保存上传的内容时,因为信息还在网络中,没有接收到,导致结果不可用。

4.因为是异步发起请求,这就导致了发起请求的连接可能使用的不是之前建立连接的套接字。也就是说是一个新的连接,但是这个新的连接没有登录状态,所以很多操作都是禁用。也就能解释系统的问题。后续改称session就没有问题了。

5.一般出问题的不在数据上,而在于怎么发送过去。

6.同一个网页上,并不会说只会建立一个连接,为了快速响应页面,同时出现多个连接也不是不可行的。

7.压力测试的时候可以使用webbench,但是记得使用-2的选项,用于模拟HTTP/1.1。

8.测试的时候使用的命令:./webbench -2 --get -c 10000 -t 5 http:https://localhost:7777/login.html 已经可以实现上万的并发连接,同时QPS可以达到4k。

9.使用gdb 原始文件 core文件进行debug。bt可以查看出错的报错调用情况。类似于内存快照。