V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  cnbatch  ›  全部回复第 55 页 / 共 65 页
回复总数  1283
1 ... 51  52  53  54  55  56  57  58  59  60 ... 65  
2022-09-06 02:05:09 +08:00
回复了 LnTrx 创建的主题 宽带症候群 IPv6 环境下一机多 IP 玩法的讨论
单独给每个应用分配 IPv6 临时地址,这就需要操作系统的支持才行了。

不是做不到,毕竟现在已经可以做到单独让某个 /某类软件走特定通道。就看有没有人愿意贡献代码(仅限于开源系统),或者操作系统的开发商愿不愿意实现。
@cnbatch 忘了说,其实 PC 端也会遭遇移动端的“恶意软件伪装”。各大下载站可没少干这种事,更不用说针对这类 IM 了。
分几种情况

首先是移动端:

1:三大运营商的移动端基本上已经做到了 IPv6 全覆盖,所以 IP 地址在这里不是问题。
2:分发客户端是麻烦事,安卓尚且可以分发 apk ,苹果呢?不过也可以放弃支持苹果 iOS ,毕竟早已有先例,Syncthing 就是这样。
3:这个软件注定不可能在国内各大应用商店商家,所以只可能在 Google Play 出现
3.1:不少用户只能够自行下载 apk 并手动安装到手机上。
3.2:能够下载 apk 的网站很大可能性会被挡在外头。
3.3:于是,很有可能会有恶意软件假装成是这个 IM 的 apk ,诱骗用户安装。
4:现在国行手机的系统说不定已经全面内置审查功能,能够阻止用户安装特定软件(比如去年爆出的小米手机阻止安装各种 VPN 软件)。
4.1:因此,他们完全可以做到阻止用户安装该 IM ,甚至主动卸载该 IM 。


接下来说 PC 端(桌面系统):

1:只有部分地区的宽带会给用户分配 IPv6 ,可惜普及率还是不算高,这样一来就必须借助中心服务器的帮助,或者借助双栈公网的用户的帮忙。
1.1:中心服务器的相关讨论,大家已经说了很多,不再重复。
1.2:双栈公网的用户虽然也有不少(“宽带症候群”里面可以找到一大堆),但占用户总数的比例还是太少了,更何况不可能要求所有双栈公网用户都用这个 IM 。
2:分发安装包给用户相对移动端来说倒是简单不少,自己想办法去官方网站下载就行。
3:最需要注意的是杀毒软件,他们完全可以把这款 IM 当成病毒杀掉。
3.1:国外杀软倒是容易解决,应用自带签名,and/or 把 IM 提交给杀软公司免误杀,都行。
3.2:国产杀软无解。
3.3:可以教用户把 IM 所在的文件夹设置成白名单,但谁知道国产杀软理不理会呢。
4:除了国产杀软,还有国产系统,操作同上。虽然用户量应该无限接近零,但谁知道会不会真有人这么干呢。
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
1 ... 51  52  53  54  55  56  57  58  59  60 ... 65  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5069 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 38ms · UTC 09:52 · PVG 17:52 · LAX 02:52 · JFK 05:52
Developed with CodeLauncher
♥ Do have faith in what you're doing.