Go-libp2p四 | 穿透NAT

本文目的 上文Go-libp2p三 | relay例子已经分析过relay例子,并解释了两个节点如果通过中继服务进行通信。本文改造relay例子 并让这个服务做如下两件事: 交换两个节点的在交换机上的信息,帮助……

阅读全文

Blog | 随机名人名言

本文目的 我的个人博客已经搭建好了,使用的hugo+飞雪的主题。我看到有些博客上有些随机的名人名言,但是这个主题没有。遂自己写一个。 根据飞雪的主题自定义 飞雪主题的github: https://github.com/flysnow-org/maupassant-hugo 复制主题里的文件them……

阅读全文

Go-libp2p三 | relay例子

我想做什么 chat和echo两个例子,说明了两个节点之间的通信需要两节点在同一个局域网内,或者有一个节点有公网。 如果我两个节点分别在两个NAT下面, 都在各自的局域网内,则需要有一个中继服务,这个服务做……

阅读全文

Go-libp2p二 | echo例子

go-libp2p的echo例子分析 进入目录go-libp2p/examples/echo/, 编译 go build 先看README.md, 可以了解到使用echo的方式: 终端B $ ./echo -l 3001 2021/10/28 11:25:33 I am /ip4/127.0.0.1/tcp/3001/p2p/QmTu8sxDi3fSjz9ZMvkAj3qA9YAoGskroEnyLz2ZvfTBhX 2021/10/28 11:25:33 listening for connections 2021/10/28 11:25:33 Now run "./echo……

阅读全文

Go-libp2p一 | chat例子

代码下载 git clone https://github.com/libp2p/go-libp2p.git chat实例分析 进入目录go-libp2p/examples/chat/, 编译 go build 先看README.md, 可以了解到使用chat的方式 在节点 B $ ./chat -sp 3001 2021/10/28 11:01:25 Run './chat -d /ip4/127.0.0.1/tcp/3001/p2p/QmXgEXt4CiqmVmDhPPQnyVkoj3Bsx3Nggq57PPsk5tLNTs' on another console. 2021/10/28 11:01:25 You can replace 127.0.0.1 with public IP……

阅读全文

Blog | 新的开始

迁移博客 我是从18年开始写一些东西,先写在看云笔记上,后面东西越来越多。写出来的东西比较零散. 20年下半年入职新公司,开始在csdn上写博客,今年我准备尝试使用个人博客,hugo和gitPage结合部……

阅读全文

Skynet源码赏析四 | 消息调度

服务间消息流转 发送消息 数据结构message_queue *q是次级消息队列,每个服务都有与之绑定的唯一一个次级消息队列。当我们在lua层,调用skynet.send(...), 或者调用skynet.c……

阅读全文

Skynet源码赏析三 | 服务启动

skynet启动一个C服务 查看怎么启动C服务的最好的办法是打断点,看源码。 启动logger日志服务 我拿日志服务来举例子,怎么启动日志服务的呢? 传参数name = "logger", param = null, struct skynet_context *ctx = skynet_context_new(config->logservice, config->logger);; 从module……

阅读全文

Skynet源码赏析一 | 启动初始化的过程

入口文件 skynet_main.c 加载配置 struct skynet_config config; config.thread = optint("thread",8); config.module_path = optstring("cpath","./cservice/?.so"); config.harbor = optint("harbor", 1); config.bootstrap = optstring("bootstrap","snlua bootstrap"); config.daemon = optstring("daemon", NULL); config.logger = optstring("logger", NULL); config.logservice = optstring("logservice", "logger"); config.profile = optboolean("profile", 1); 从上述代码可以看到,配置都已经加载到变量struct skynet_config config;中了。 初始化 初始化skynet_context管……

阅读全文