草庐IT

Golang unix 套接字 : registering same type for RPC on different sockets?

我在Go中工作,对使用unix套接字有点陌生。尝试搜索类似的问题,但找不到任何内容,如果之前已经回答过,我们深表歉意。我想用unixsockets模拟一个机器集群进行测试。我正在测试我的Raft实现,所以我想在不同的unix套接字上注册相同类型的多个对象(一个庞大的结构)。但是看我写的一个简单的例子,效果似乎不是我想要的:为同一个导出方法拨不同的套接字似乎在单个端口上崩溃:packagemainimport("net""fmt""net/rpc""log""sync")typeServerstruct{namestring}typeSpeakArgsstruct{}typeSpeakR

go - 是否可以使用 Go net/rpc 检查元数据?

Go中的RPC服务器示例通常看起来像这样(来自https://golang.org/pkg/net/rpc/):arith:=new(Arith)rpc.Register(arith)rpc.HandleHTTP()l,e:=net.Listen("tcp",":1234")ife!=nil{log.Fatal("listenerror:",e)}gohttp.Serve(l,nil)是否可以在将连接传递给注册函数之前检查与连接关联的元数据?我想先根据ACL检查客户端IP、APIkey和请求的函数。编辑添加:我意识到可以使用l.RemoteAddr()从监听器获取远程地址-目前尚不清楚

networking - 以编程方式模拟数据包丢失和延迟

我有一个通过rpc公开其服务的服务器和一个使用这些服务的客户端。为了测试此设置,我需要引入数据包丢失和延迟。我在stackoverflow上发现了一些技术,如tc、修改iptables等,但它们都需要root密码来模拟丢包。有没有一种方法可以在不需要root密码的情况下模拟这些数据包丢失。注意:代码是用GO编程语言编写的 最佳答案 一种方法是隔离您的数据包处理代码,并创建它的模拟版本(或ifdef'd部分),用于测试,以您选择的方式行为不当。这可能足以满足您的需求。对于商业或关键应用程序的工业强度测试,您至少需要一个有root密码的

使用 JSON-RPC 编码数据时出错 - 我是不是很笨?

所以我正在使用类似于以下的代码,但无法让RPC在FooHolder中工作,在FooHolder中它保存满足接口(interface)的对象。我可能遗漏了一些东西,但它看起来应该可以工作——使用反射包它可以正确识别类型,但是当函数返回时出现了一些问题....packagemainimport("log""net""net/rpc""net/rpc/jsonrpc""reflect")typeFooInterfaceinterface{DoTheBartman(in*string,out*string)errorDoThis(in*[]string,out*[]string)errorNo

image - 通过 goRPC 发送和图像

我想使用golang数据包通过rpc发送图像valyalagoRPC我在服务器中接收图像类型时遇到了一些问题。这是我的客户端代码,它获取一张.jpg图像,对其进行解码并通过rpc发送:c:=&gorpc.Client{//TCPaddressoftheserver.Addr:"127.0.0.1:12345",}c.Start()reader,err:=os.Open("barranco.jpg")iferr!=nil{log.Fatal(err)}deferreader.Close()img,_,err:=image.Decode(reader)iferr!=nil{log.Fata

go - rpc Call 方法是否在与服务器相同的 go routine 中运行?

我的服务器:func(t*Arith)Multiply(args*Args,reply*int)error{*reply=args.A*args.Breturnnil}funcmain(){arith:=new(Arith)rpc.Register(arith)rpc.HandleHTTP()l,e:=net.Listen("tcp",":1234")ife!=nil{log.Fatal("listenerror:",e)}gohttp.Serve(l,nil)}客户:client.Call("Arith.Multiply",args,&reply)我认为Multiply在另一个gor

go - rpc.ServerCodec 还在服务吗?

我正在执行一些RPC测试,偶然发现了一个我似乎无法解决的问题。在我的测试中,我创建了三个独立的RPC服务器,我尝试关闭所有这些服务器。然而,在执行我的最后一个测试(TestRpcCodecServerClientComm)时,我的客户端连接似乎正在连接到我启动的第一个RPC服务器(我知道这一点是因为我在某些时候将ID附加到RPCHandlers),即使我尝试了一切我可以确保它被关闭了。虽然代码不在那里,但我已尝试检查每一个错误,但这并没有带来任何结果。rpc.gopackagerbotimport("io""net""net/rpc""net/rpc/jsonrpc")funcRpcC

JSON-RPC, "cannot unmarshal object"

我正在尝试了解JSON-RPC的工作原理,并正在使用Go语言(golang)对其进行测试。Go程序运行良好。它做了它应该做的。但是当我尝试通过telnet发出原始请求时,它给出了一个错误。这里描述了工作和super简单的JSON-RPC服务器://rpc_json_server.gopackagemainimport("log""net""net/http""net/rpc""net/rpc/jsonrpc")//------------------------------------------------------------------------------//Types//

go - 使用 JSON-RPC 调用传递身份验证详细信息

我没能找到任何关于此的文档。我需要对需要传递(基本)身份验证详细信息的API进行JSON-RPC调用,但找不到使用标准net/rpc/jsonrpc包执行此操作的任何方法。下面是我的非身份验证代码的剪辑版本。varreplystringnetClient,_=net.Dial("tcp","localhost:1234")jsonClient=jsonrpc.NewClient(netClient)jsonClient.Call("someMethod",someArgs,&reply) 最佳答案 Basic-Auth是一个HTTP

go - 如何将结构作为参数传递给 xml-rpc

我有点新手,一直在尝试使用我的goAPI中的XML-RPC方法,为此我选择了https://github.com/mattn/go-xmlrpc一切正常,直到我不得不将结构作为参数传递。在我得到的结构的示例中,格式为python字典{string:string}或空字典。如果我为结构提供我在python示例中使用的值,我将得到panicserving。我试图创建映射或空结构,但它会说给定的参数是错误的(错误是由xml-rpc引起的)。如果我尝试将其转换为json并使用编码/json解码器将其解析回来,它会说我使用了错误的结构。typeDatastruct{serial_numberst