作者回复: 我在代码里多加一些注释,可以看最新的代码
https://github.com/froghui/yolanda
作者回复: 这里举的一个例子,有可能在新的协议栈下有所改变,但是不管怎样,理论上的分析有可能导致阻塞,所以我们还是应该在平时编码中将监听套接字也设置为非阻塞的。
作者回复: 你的理解是对的。
作者回复: 好的,我在github上的提交多加一些注释。
https://github.com/froghui/yolanda
作者回复: 可以这么理解。当然,接收缓冲去可读的大小,和发送缓冲区可写的大小都是可以通过内核参数动态配置。
作者回复: accept和阻塞套接字一起使用就是阻塞的,和非阻塞套集字一起使用就是非阻塞的。阻塞和非阻塞是作用到套集字上的。
作者回复: 你是对的,我已经修正代码,等待编辑更新,感谢指正。
作者回复: 还好吧,这里主要是说非阻塞I/O的含义,以及对我们编写程序的帮助,多读一下,应该可以搞定的。
作者回复: 这个例子就是说明一下监听套接字需要设置为非阻塞的,结果不重要了。
作者回复: 不是一定需要select才可以 accept的。这里的例子主要是说明如果不给监听套集字设置为非阻塞,可能会引起的问题。
作者回复: ROT13(回转13位,rotateby13places,有时中间加了个减号称作ROT-13)是一种简易的置换暗码。
ROT-13 编码是一种每一个字母被另一个字母代替的方法。这个代替字母是由原来的字母向前移动 13 个字母而得到的。数字和非字母字符保持不变。
它是一种在网路论坛用作隐藏八卦、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥。ROT13激励了广泛的线上书信撰写与字母游戏,且它常于新闻群组对话中被提及。
作者回复: 对,是指close掉两个方向的。
作者回复: 我是ubuntu 16.04 LTS版本,默认的pthread就可以支持了。
作者回复: 其实还是蛮简单的,稍微解释一下:
onSocketRead是通过套接字读取数据,数据存放在Buffer对象里,Buffer对象通过了writeIndex记录当前数
据区可写的位置;
onSocketWrite通过套接字写数据,数据来源于Buffer缓冲对象,Buffer缓冲对象的readIndex记录了当前缓冲区读的位置。
作者回复: 如果有多个\n,这里也认为客户端结束了,只不过\n会发送给客户端。
可以加一个处理,如果读到\n,就不要再继续读下去了。
作者回复: 代码都在:https://github.com/froghui/yolanda
这里贴一段:
int listenfd;
listenfd = socket(AF_INET, SOCK_STREAM, 0);
fcntl(listenfd, F_SETFL, O_NONBLOCK);