Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Buffer 缓冲 #6

Open
liushengxi13689209566 opened this issue Apr 11, 2019 · 16 comments
Open

Buffer 缓冲 #6

liushengxi13689209566 opened this issue Apr 11, 2019 · 16 comments

Comments

@liushengxi13689209566
Copy link

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

@linyacool
Copy link
Owner

是指在哪里提供啊?

@liushengxi13689209566
Copy link
Author

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

@linyacool
Copy link
Owner

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

@liushengxi13689209566
Copy link
Author

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

@grasslog
Copy link

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

1 similar comment
@grasslog
Copy link

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

@linyacool
Copy link
Owner

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

恩,确实

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

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

@linyacool
Copy link
Owner

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

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

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

@grasslog
Copy link

感谢博主大大,我懂了

@grasslog
Copy link

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

@grasslog
Copy link

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

@linyacool
Copy link
Owner

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

保证不了的,发完就行了

@linyacool
Copy link
Owner

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

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

@grasslog
Copy link

嗯嗯,感谢博主

@lixuhao
Copy link

lixuhao commented Sep 17, 2019

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

@linyacool
Copy link
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants