前言里面提到的代码已经被作者删掉了,╮( ̄▽ ̄”)╭,源代码已经没救了
源码一直在,没有动过,地址是:https://gitee.com/Mac_J/projects 在列表中找到 mac-rpc 项目即可(直接地址:https://gitee.com/Mac_J/mac-rpc)
书中有写具体的地址??????!!????请指出具体的地址在哪一页,哪一行??
前言里有写
@陈晓猛 你就别误导大家了,根本没有源代码,博文和作者的gitee全删掉了,大家散了吧
@旅行的目光 源码一直在,没有动过,地址是:https://gitee.com/Mac_J/projects 在列表中找到 mac-rpc 项目即可(直接地址:https://gitee.com/Mac_J/mac-rpc)
在第89页中,代码注释说:收到的消息可能发生了粘包,包含多条消息(但不会只有半条)。请问为什么不会出现只有半条消息的情况?
因为前面的while循环中会判断收到的字符串必须以\n结尾才会退出当前循环。
本书的文件传输示例,p78页是错误的。
因为服务端采用的是NIO模型,在处理就绪的读事件时,只是读取了当前socket的读缓冲区,若客户端发送的文件很大时,其实这里只是读了一部分文件。书中代码在从channel读完数据时,直接注册写事件发ok是不对的。因为这时服务端在一次select时可能没有读取全部文件数据,之后的写事件处理发ok,然后关闭socket。客户端由于数据没发完,还会继续发送文件数据,但此时对端已经关闭socket,就会出错。 不信,你可以运行代码读取一个1G的文件试试。正常的做法,还是发送文件前,告诉服务端这次文件的大小,服务端只有在读到给定长度的字节后,才注册写事件,向客户端发ok。
修正后的代码仓库为:https://github.com/SpecialYy/NIO-File-Transfer
这个例子确实有误,不够严谨,感谢指正!
没有下载地址,有那么难吗?
请仔细阅读前言
@旅行的目光 永久开源,不会删除的,https://gitee.com/Mac_J/projects
前言里面提到的代码已经被作者删掉了,╮( ̄▽ ̄”)╭,源代码已经没救了

书中有写具体的地址??????!!????请指出具体的地址在哪一页,哪一行??
在第89页中,代码注释说:收到的消息可能发生了粘包,包含多条消息(但不会只有半条)。请问为什么不会出现只有半条消息的情况?
本书的文件传输示例,p78页是错误的。
因为服务端采用的是NIO模型,在处理就绪的读事件时,只是读取了当前socket的读缓冲区,若客户端发送的文件很大时,其实这里只是读了一部分文件。书中代码在从channel读完数据时,直接注册写事件发ok是不对的。因为这时服务端在一次select时可能没有读取全部文件数据,之后的写事件处理发ok,然后关闭socket。客户端由于数据没发完,还会继续发送文件数据,但此时对端已经关闭socket,就会出错。 不信,你可以运行代码读取一个1G的文件试试。正常的做法,还是发送文件前,告诉服务端这次文件的大小,服务端只有在读到给定长度的字节后,才注册写事件,向客户端发ok。
修正后的代码仓库为:https://github.com/SpecialYy/NIO-File-Transfer
没有下载地址,有那么难吗?