WebServer icon indicating copy to clipboard operation
WebServer copied to clipboard

Buffer 缓冲

Open liushengxi13689209566 opened this issue 5 years ago • 16 comments

想问一下,你这个没有提供 Buffer 缓冲吗??

liushengxi13689209566 avatar Apr 11 '19 13:04 liushengxi13689209566

是指在哪里提供啊?

linyacool avatar Apr 11 '19 13:04 linyacool

非阻塞IO应该都有Buffer作为缓冲.假如所到来的数据没有一次性读取完,那么剩下的数据您这里是如何处理的呐? muduo也是有 Buffer 缓冲的啊

liushengxi13689209566 avatar Apr 11 '19 14:04 liushengxi13689209566

有的,我直接用了个string来缓冲了

linyacool avatar Apr 11 '19 15:04 linyacool

恩恩,明白了.我也写了一个这个项目,准备在你这里汲取一些精华.在你这个项目里加个配置文件和支持动态文件的功能吧,感觉这样会更好一点.

liushengxi13689209566 avatar Apr 12 '19 00:04 liushengxi13689209566

你们好,请问一下,我不太理解buffer缓冲。tcp的一方发送数据包,接收方接收到数据包,假设数据没有一次性读(read)完那么剩下的数据就无法处理吗?(tcp内核不是提供了内核缓冲区吗,为什么用户态还需要缓冲区)大佬,求解答

grasslog avatar May 15 '19 03:05 grasslog

你们好,请问一下,我不太理解buffer缓冲。tcp的一方发送数据包,接收方接收到数据包,假设数据没有一次性读(read)完那么剩下的数据就无法处理吗?(tcp内核不是提供了内核缓冲区吗,为什么用户态还需要缓冲区)大佬,求解答

grasslog avatar May 15 '19 03:05 grasslog

恩恩,明白了.我也写了一个这个项目,准备在你这里汲取一些精华.在你这个项目里加个配置文件和支持动态文件的功能吧,感觉这样会更好一点.

恩,确实

恩恩,明白了.我也写了一个这个项目,准备在你这里汲取一些精华.在你这个项目里加个配置文件和支持动态文件的功能吧,感觉这样会更好一点.

可以做的事情很多的,我只做到这一步了。。

linyacool avatar May 15 '19 14:05 linyacool

你们好,请问一下,我不太理解buffer缓冲。tcp的一方发送数据包,接收方接收到数据包,假设数据没有一次性读(read)完那么剩下的数据就无法处理吗?(tcp内核不是提供了内核缓冲区吗,为什么用户态还需要缓冲区)大佬,求解答

因为tcp是基于字节流的协议,内核没有能力解析你的字节流,只能在用户态自己解析。

举个例子,A给B发 surprise B内核态接受sur结束了,用户态从内核读到sur,什么也做不了,因为这不是一个完整的消息,好吧,下次继续读,读到prise,哦,这是另外一个单词了。 正确的做法就是我读到sur,我不明白是什么意思,我存起来,下次读到prise,组合起来,我才明白,原来是surprise的意思

linyacool avatar May 15 '19 14:05 linyacool

感谢博主大大,我懂了

grasslog avatar May 15 '19 14:05 grasslog

请问一下,如果要主动关闭连接,如何保证对方已经收到全部数据?

grasslog avatar Jun 19 '19 01:06 grasslog

如何设计并使用缓冲区?有没有什么设计上的可借鉴之处?

grasslog avatar Jun 19 '19 01:06 grasslog

请问一下,如果要主动关闭连接,如何保证对方已经收到全部数据?

保证不了的,发完就行了

linyacool avatar Jun 19 '19 02:06 linyacool

如何设计并使用缓冲区?有没有什么设计上的可借鉴之处?

这个可以看一下陈硕的那本书<Linux多线程服务端编程>

linyacool avatar Jun 19 '19 02:06 linyacool

嗯嗯,感谢博主

grasslog avatar Jun 19 '19 02:06 grasslog

博主,你这个运行服务器是在上层生成的build/release目录下运行服务器的吗 就是在这个目录下,运行 ./WebServer -t 线程数目 -l 生成的日志所在的目录 -p 端口号

lixuhao avatar Sep 17 '19 02:09 lixuhao

@lixuhao 再进几层找到可执行文件

linyacool avatar Sep 17 '19 02:09 linyacool