Open geektutu opened 4 years ago
您好博主感谢您的教程。对初学者帮助很大。
可不可以麻烦解释下这个循环?谢谢
for {
conn, _ := listener.Accept()
defer conn.Close()
go rpc.ServeConn(conn)
}
listener.Accept() 阻塞等待客户端与服务端建立连接,建立连接后交给 rpc.ServeConn 异步处理。因为可能有多个客户端建立连接,所以需要无限循环,每建立一个链接,就异步处理,然后继续等待下一个连接建立。
感谢博主的教程,我在使用tls进行通信时,遇到了证书的问题,可以请教一下在创建证书时,server和client证书的host应该怎么填吗?
报错为:can not create tls.Dialx509: certificate is not valid for any names, but wanted to match localhost
和can not create tls.Dialx509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
关于证书的问题,我找到了另一片教程,有同样问题的童鞋可以参考。粗略地说是因为新版本的go禁用了x509,所以要换另一种方式配置。 GO 1.15 以上版本解决GRPC X509 Common Name field, use SANs or temporarily enable Common Name matching
https://geektutu.com/post/quick-go-rpc.html
本文介绍了 Go 语言(Golang)中远程过程调用(Remote Procedure Call, RPC)的使用方式,使用 Golang 标准库 net/rpc,同时介绍了异步调用,以及如何使用 TLS/SSL/HTTPS 实现服务器端和客户端的单向鉴权、双向鉴权。