dial tcp: lookup localhost: no such host panic: runtime error: invalid memory address or nil pointer

一个通过rpc实现客户端和服务端连接的小例子
服务端

package main

import (
	"net"
	"net/rpc"
	"net/rpc/jsonrpc"
)

type HelloService struct {
}

func (s *HelloService) Hello(request string, reply *string) error {
	//返回值是通过修改reply的值
	*reply = "hello, " + request
	return nil
}

func main() {
	//1.实例化一个server
	listener, _ := net.Listen("tcp", ":1234")
	//2.注册处理逻辑
	_ = rpc.RegisterName("HelloService", &HelloService{})
	//3.启动服务
	conn, _ := listener.Accept() //当一个新的连接进来的时候
	rpc.ServeCodec(jsonrpc.NewServerCodec(conn))
}

客户端

package main

import (
	"encoding/json"
	"fmt"
	"net"
	"net/rpc"
	"net/rpc/jsonrpc"
	"time"

	"github.com/kirinlabs/HttpRequest"
)
func main() {
	//1.建立连接
	conn, err := net.Dial("tcp", "127.0.0.1:1234")
	if err != nil {
		fmt.Println(err)
	}
	var reply *string = new(string)
	client := rpc.NewClientWithCodec(jsonrpc.NewClientCodec(conn))
	err = client.Call("HelloService.Hello", "bobby", reply)
	if err != nil {
		panic("调用失败")
	}
	fmt.Println(*reply)

}

错误内容

dial tcp: lookup localhost: no such host
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0xdbdab5b]

主要问题是不能将localhost解析为127.0.0.1,将localhost改为127.0.0.1就可以了。

dial tcp:lookup registry-1.docker.io 这个错误通常表示的是访问注册表(Registry) 时出现了连接问题或者 DNS 解析问题。Docker 是一种开源的容器化引擎,它可以在 Linux、Windows 和 macOS 等不同的操作系统上运行,能够将应用程序及其依赖打包成可移植的容器来简化应用部署。Docker 中的镜像(Image) 是容器的基础模板,其存储在 Docker 的注册表中,当运行一个容器时,Docker 引擎会自动从注册表下载相应的镜像。所以如果出现了 dial tcp:lookup registry-1.docker.io 错误,那么我们无法下载镜像,也就无法运行容器。 造成 dial tcp:lookup registry-1.docker.io 错误的原因可能有很多,可能是网络不稳定、DNS 解析问题、代理问题以及操作系统配置等。解决这种错误的方法也有很多,可以尝试更改 DNS 解析设置、切换到稳定的网络,或者禁用代理等措施。一些解决方法如下: 1. 修改 DNS 设置。一些情况下 DNS 缓存造成了问题,需清除 DNS 缓存,重新解析。另外,有时候也可以修改本地的 DNS 设置,在/etc/resolv.conf 文件中添加 Google 的 DNS 8.8.8.8 即可。命令为: echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null 2. 检查网络连接。首先确定本地的网络连接是否正常。可以使用 ping 命令检测 DNS 是否正常解析,然后再尝试连接 Docker 服务器。如果是代理的问题,尝试关闭代理,再重试一下。 3. 更新操作系统。检查操作系统是否需要更新,特别是针对网络连接方面。 4. 更换 Docker 镜像源。由于网络原因,国内镜像源可能无法正常访问,所以可以尝试更改 Docker 镜像源为国外的源,比如 Docker 官方的镜像源等。 总之,如何解决 dial tcp:lookup registry-1.docker.io 错误是需要具体情况具体分析,解决方法也可能因具体情况而异,需要根据错误提示和具体问题来进行判断和解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值