V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  cnbatch  ›  全部回复第 55 页 / 共 64 页
回复总数  1280
1 ... 47  48  49  50  51  52  53  54  55  56 ... 64  
2022-09-05 16:15:28 +08:00
回复了 justanetizen 创建的主题 程序员 推荐一个不错的 Cplusplus 网络库
事先声明,我不是游戏行业。

首先,推荐某样东西,肯定需要跟大家说“为什么”、“好在哪”吧?尤其是标题写着“不错”两个字,那么是哪方面的“不错”?然而重新看看这个帖子,除了贴了个链接,什么都没讲。这给人一种很莫名其妙,甚至有一种“广告”的感觉。

第二,再看看链接,显然连接到错误页面了( 1 楼就有提到),会给人一种“敷衍”的感觉。不清楚这是 V2EX 的自动替换还是怎样。


既然没说好在哪,那就进去看看它的各种特点,并随意点评。

1, “TCP 粘包”这种说法早就被 V2EX 的各种讨论贴吐槽过很多次,总地来说大家的观点是,讲出“TCP 粘包”这种字眼等于主动引战,属于不专业的表现。

2 ,使用 O_NONBLOCK + std::thread 算不上“不错”,这纯粹为了省事,“能用就行”。再看一眼介绍,“专注于客户端”,难怪。由于是在客户端跑,一般只会建立个位数的连接,所以大多数情况下都无所谓,察觉不出。

3, 为了搞清楚为什么作者会“偷懒”,自然要进去看看它的介绍,包括 Github 页面。看完后发现,原来作者的着重点并不是单纯的“异步”,而是为了给游戏同行提供一个集成化的、一站式的解决方案,免得每次使用其他异步库时都需要重新手写代码处理诸如“TCP 流数据拆包”、叠一层 KCP 库、游戏引擎交互之类的麻烦事。

看得出,作者的精力都放在游戏引擎交互、游戏脚本语言的交互、游戏行业常用网络功能的整合。

结论就是,这个库是专门为游戏行业量身打造的。它所带的特色功能,其他人几乎用不上。



接下来,你从 emacs 解释了为什么会关注这个库,原来是因为“多线程”和“异步 IO”的支持。

既然如此,那我就只好作出提醒,支持多线程和异步 IO 支持是各大 C++网络库的基础性操作,并不是特色、特点,也不是专属优点。
除了前面提到的另外 4 个库,实际上其他的 C++网络库,或者带网络支持的 C++库,也是这样。

比如阿里巴巴的 PhotonLibOS:
https://github.com/alibaba/PhotonLibOS/blob/main/net/kernel_socket.cpp
搜索下就可以看到,用了 pthread (多线程),epoll (异步 IO )
2022-09-04 20:42:48 +08:00
回复了 justanetizen 创建的主题 程序员 推荐一个不错的 Cplusplus 网络库
真奇怪,代码本身就是开源的,介绍也是现成的,完全可以自己看的呀……
而且我前面那些,哪句话说错了?

也行,那就列一次出来,包括代码和它们各自的说明:

yasio:
首页自己的介绍:“专注于客户端和基于各种游戏引擎的游戏客户端网络服务”

内置 KCP:
https://github.com/yasio/thirdparty/tree/0264931f4af65f9532863d37c2cc206604d16918

游戏引擎支持:
https://github.com/yasio/yasio_unity
https://github.com/yasio/yasio_unreal

TCP 流数据拆包(“粘包”):
https://yasio.github.io/yasio/3.39.4/unpacking/

以上都是其它异步网络库不具备的。


C++asio:
https://think-async.com/Asio/asio-1.24.0/doc/asio/using.html
预定义 ASIO_DISABLE_THREADS 可关闭多线程支持。
即默认使用多线程。
至于“异步”,名字就说明一切了。

libev:
https://github.com/enki/libev/blob/master/ev.c#L768
https://stackoverflow.com/questions/14621261/using-libev-with-multiple-threads
http://blog.leanote.com/post/simon88/2f29107bd8dc (第三方博客)
https://developer.aliyun.com/article/801557
可以看出,能够自行选择多线程还是单线程模式

https://metacpan.org/dist/EV/view/libev/ev.pod
说明文档,搜索“async”可以看见异步的说明

libevent:
https://libevent.org/
人家首页直接就说了:Libevent can also be used for multi-threaded applications, either by isolating each event_base so that only a single thread accesses it, or by locked access to a single shared event_base.
关键部分—— [也] 能支持多线程
意思就是默认单线程,但同样可以多线程
更进一步的说明: https://quant67.com/post/ioevent/multithread-libevent.html (第三方网站)
如何使用 libevent 实现异步网络编程:
https://gist.github.com/ajhwb/3685796

libuv:
https://github.com/libuv/libuv
项目说明直接就写了出来:
Asynchronous TCP and UDP sockets
Asynchronous DNS resolution
Asynchronous file and file system operations
Threading and synchronization primitives
清清楚楚。
2022-09-04 20:01:32 +08:00
回复了 justanetizen 创建的主题 程序员 推荐一个不错的 Cplusplus 网络库
@justanetizen 并不是在杠,而是觉得你的关注点(是各个库都有的共性,只不过 yasio 列了出来而已)完全偏离了人家原作者的关注点(游戏行业的痛点),人家原作者并不是仅仅为了“多线程”而多线程、为了“异步”而异步。

我列了这么一堆字是告诉你原作者的关注点是什么。
2022-09-04 19:26:19 +08:00
回复了 sunwq 创建的主题 程序员 五笔小程序
说起五笔,三种五笔方案真的有点折磨人。
对于有些字,三种方案中总有一种不一样的。就用小程序查询的字举例:

概——86: svc, 98: svaq, 新世纪: svcq [86≈新世纪]
其——86: adw, 98:dwu, 新世纪: adwu [86≈新世纪]
商——86: um, 98:yumk, 新世纪: yumk [98=新世纪]
乃——86: ent, 98: bnt, 新世纪:bnt [98=新世纪]
灣——86: ixyx, 98: iyxx, 新世纪: iyxx [98=新世纪]
寫——86: pvqo. 98: peqo, 新世纪: peqo [98=新世纪]

新世纪版被认为是 86 版的改良。
要是王永民再来一次心血来潮,在 98 版的基础上再来一次“改良”,那就真是会导致新学习的人遭遇“选择困难症”
2022-09-04 19:01:44 +08:00
回复了 sunwq 创建的主题 程序员 五笔小程序
五笔 06 ?确定没写错?
新世纪版是在 2008 年 1 月 28 日推出的,所以“五笔 06”应该是指“五笔 08”?
2022-09-04 18:13:30 +08:00
回复了 justanetizen 创建的主题 程序员 推荐一个不错的 Cplusplus 网络库
仅仅是因为“多线程”和“异步 IO”啊……

对于 yasio 的 FAQ 提到的其它网络库库 (asio libevent libev libuv) 来说,“异步 IO”本身同样就是标配,这没什么好说的。这几个库一样都支持多线程,其中部分默认多线程的库可以配置成单线程异步 IO 模式,默认单线程的库也提供多线程环境的支持。

可以说,如果仅仅只是“多线程”和“异步 IO”,那么另外那几个库同样达标,而且做得更好。

yasio 的“亮点”在于“粘包处理”(从 TCP 流数据中自动拆出所需数据),要不然它也不会醒目地单独放在目录列出来;以及内置 KCP 库(游戏行业比较喜欢使用 KCP 传数据),在“预处理器”那里有提到;还有跟部分游戏引擎的交互支持,在 Github 说明那里有提到。
这些显然不是你的关注点。
2022-09-03 22:29:43 +08:00
回复了 jyeric 创建的主题 宽带症候群 关于电信 sdn 网关 ipv6 网络裸奔问题
担心 SMB 纯属多余,与其在这里猜测还不如直接进入 Windows 自带的防火墙的“高级安全 Windows Defender 防火墙”设置望一眼。

进入设置后可以看到,SMB 在防火墙的默认设置当中并不对公网开放,无论 IPv4 还是 IPv6 。
2022-09-03 22:19:21 +08:00
回复了 justanetizen 创建的主题 程序员 推荐一个不错的 Cplusplus 网络库
行吧,我来拆拆潜台词:

客户端的重心不在并发——所以觉得没必要用系统自己的异步 API ,也不想用已有的各大异步网络库
而在 gui 的 fluent——所以只想关注 GUI 的交互,不想手动处理报文细节,也不想处理 TCP 流数据
多线程是必需的——由于没用到系统异步 API ,只能选择多线程去处理
2022-09-03 17:39:10 +08:00
回复了 justanetizen 创建的主题 程序员 推荐一个不错的 Cplusplus 网络库
看了下 FAQ ,又发现“TCP 粘包处理”。这是 V2EX 老生常谈的话题,略。

再粗略搜了下源码,发现它并不使用各系统的异步 API (IOCP / kqueue / epoll / io_uring 全都未使用),而是使用 O_NONBLOCK + std::thread 来达到“异步”的效果。

重新看了下介绍,“专注于客户端”。原来如此。
2022-09-03 17:24:09 +08:00
回复了 justanetizen 创建的主题 程序员 推荐一个不错的 Cplusplus 网络库
目录列表有个醒目的“粘包处理”

很好,看来又开启了 V2EX 流量密码
2022-09-01 23:52:22 +08:00
回复了 ffgrinder 创建的主题 Linux 请教如何转发 VPN 到内网另一台机器
Ubuntu 那台机器需要再启用 NAT 。

用纯路由方式转发的话,192.168.1.x 的包到达公司网段之后,无法返回来,原因在于公司那边不知道返回 192.168.1.x 应该往哪发,需要编辑公司内部的路由表才行。甚至 192.168.1.x 在公司内网本身就存在,那就更加不可能专门改设置了。

因此需要在 Ubuntu 这台机器采用 NAT 转换一次地址。

至于 nftables 或 iptables 怎么写 NAT 规则,这方面的资料很容易找
2022-09-01 15:04:43 +08:00
回复了 siwadiya 创建的主题 Windows windows 快捷键怎么删除当前行的光标前的所有字符
Windows 10 1809 应该是比较旧了,较新的版本( 20H2 、21H2 )都可以这样做
2022-08-31 23:48:42 +08:00
回复了 inSpring 创建的主题 广州 对广州几个区的初浅印象,欢迎拍砖哈哈哈
@tomchiler 萝岗原本是从增城、白云、天河、黄埔分割出来的,最后再合并到黄埔。最终效果等于缩减了增城、白云、天河的面积,扩大了黄埔的面积。
2022-08-31 23:43:51 +08:00
回复了 inSpring 创建的主题 广州 对广州几个区的初浅印象,欢迎拍砖哈哈哈
荔湾还有很多具有历史景点,例如

荔枝湾、荔枝湾涌(这是新近重新恢复的)
陈家祠
沙面
文化公园

此外,如果想买海鲜,强烈推荐黄沙水产市场

紧靠着上述景点(沙面、文化公园)的越秀区南岸,继续是一堆历史景点

爱群大厦
俗称“石室”的圣心大教堂
海关博物馆(原广州海关所在地)

淘街(严格来讲这不算景点,然而电子爱好者十分喜欢这里)


说到越秀区,那就不得不提二沙岛。

二沙岛房屋密度极低,绿化率奇高,公交车线路非常少,一巴掌的手指都数得完。
如果没有事先了解过就直接进二沙岛的话,甚至会以为这座岛是郊区。
这里有交响乐爱好者最喜爱的星海音乐厅,喜爱程度远超位于珠江新城的广州大剧院。
每天早上,许多跑步爱好者会环岛锻炼。

然而,二沙岛是全市房价最高的区域,比起天河区的珠江新城高得多。
“离奇”的是,正在施工中的地铁、该岛东侧更完善的交通设施(连接到海心沙的人行天桥)反而导致附近房价下跌。

因为,二沙岛是广州的富贵区,住在这座岛上的人,非富即贵。在他们看来,登岛的人越少越好,以免人声嘈杂影响他们的生活。


刚刚提到了连接二沙岛与海心沙的那座人行天桥,如果 OP 有时间的话可以去看看,确实挺漂亮的。这座桥叫做“海心桥”。
“海心桥”在征名期间,有人(准确地说,是路盲)想把它叫做“彩虹桥”。幸好这个名字没采用,否则就会连广州人自己都分不清“我要去彩虹桥”到底是指哪条桥。

在荔湾区西华路与荔湾路的交界处,有一条小桥坐落在驷马涌上方,这就是彩虹桥。这座桥同时还是西华路的一部分。
这条桥的历史长达上千年,南汉时期就已经存在,当时驷马涌十分宽阔,这座桥跨度较长,就像彩虹横跨河面。
后来驷马涌越来越窄,在上世纪 30 年代彩虹桥经历过最后一次重建,就是现在这个样子了。
(又回到荔湾区了,完美)
2022-08-31 19:03:50 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
2022-08-31 15:10:04 +08:00
回复了 zhoudaiyu 创建的主题 问与答 如何说服领导同意升级内核到 5.4?
最好先升级到 RHEL 7.9 。稳妥起见可以只升级一台再看看后续。

鉴于 RHEL 7.9 对于 7.6 而言只是常规更新,所以可以试下这样跟你的领导讲:不如把系统常规更新、补丁包都安装好,说不定问题就修复了。
2022-08-31 00:06:53 +08:00
回复了 siwadiya 创建的主题 Windows windows 快捷键怎么删除当前行的光标前的所有字符
@siwadiya
@AllenHua

可以做到,CTRL + Shift + backspace
2022-08-30 23:57:03 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
小提示,在 PowerShell 7.x ,curl 和 wget 已经不再是 Invoke-WebRequest 的别名了。
2022-08-30 18:38:09 +08:00
回复了 skywind3000 创建的主题 Vim 分享篇文章:为什么我会使用 Vim ?
@360dust 严格来讲不是一回事。vim 是 vi 的增强版。

只不过大多数 Linux 发行版为了省事,直接就自带了 vim 取代 vi ,不用额外再手动安装 vim 。

而在 BSD ,两者仍然分得很清楚,系统默认自带 vi ,想要用 vim 那就自己安装。
2022-08-30 18:28:23 +08:00
回复了 Marionic0723 创建的主题 宽带症候群 关于运营商分配假公网 IP 的问题
@tia 还有个特殊原因。

自前几天《运营商改造为 IPoE 的优势与劣势以及 IPv6 的安全性问题》在各大网站传播,就有小白和半桶水说,IPv6 查房可以精确到家,而以为 IPv4 因为地址是共享了的,所以查起来就没那么精确,从而“抵制”IPv6 。

他们甚至丝毫不知道运营商在 IPv4 的当下早就已经保留 NAT 转换日志,一样可以精确查到家。

显然这群小白依然以 IPv4 的角度去理解 IPv6 的分配方式。
1 ... 47  48  49  50  51  52  53  54  55  56 ... 64  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1017 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 20:24 · PVG 04:24 · LAX 13:24 · JFK 16:24
Developed with CodeLauncher
♥ Do have faith in what you're doing.