内容简介:1,客户端2,服务端3,实现类
1,客户端
package thrift
import (
"fmt"
"git.apache.org/thrift.git/lib/go/thrift"
"net"
"os"
"test/idlgen/HelloWorld"
)
func Client1() {
transportFactory := thrift.NewTBufferedTransportFactory(8192)
protocolFactory := thrift.NewTCompactProtocolFactory()
transport, err := thrift.NewTSocket(net.JoinHostPort("127.0.0.1", "9999"))
if err != nil{
fmt.Println("err")
os.Exit(1)
}
useTransport := transportFactory.GetTransport(transport)
client := HelloWorld.NewHelloGoClientFactory(useTransport, protocolFactory)
if err = transport.Open(); err != nil{
fmt.Println("err")
os.Exit(1)
}
defer transport.Close()
res, err := client.Hello("hello")
if err != nil{
fmt.Println("err")
os.Exit(1)
}
fmt.Println(res)
}
2,服务端
package thrift
import (
"fmt"
"git.apache.org/thrift.git/lib/go/thrift"
"test/idlgen/HelloWorld"
)
func Server1() {
transport, err := thrift.NewTServerSocket(":9999")
if err != nil{
fmt.Println("err")
}
handler := &HelloGo{}
processor := HelloWorld.NewHelloGoProcessor(handler)
transportFactory := thrift.NewTBufferedTransportFactory(8192)
protocolFactory := thrift.NewTCompactProtocolFactory()
server := thrift.NewTSimpleServer4(processor, transport, transportFactory, protocolFactory)
if err := server.Serve(); err != nil{
fmt.Println("err")
}
}
3,实现类
package thrift
type HelloGo struct {
}
func (hg *HelloGo) Hello(name string) (string, error) {
return name, nil
}
4,idl定义
namespace php Idlgen.HelloWorld
namespace java Idlgen.HelloWorld
namespace go idlgen.HelloWorld
service HelloGo{
string hello(1:string name),
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解计算机系统(英文版·第2版)
[美] Randal E. Bryant、[美] David R. O'Hallaron / 机械工业出版社 / 2011-1 / 128.00元
本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容覆盖计算机导论、体系结构和处理器设计等多门课程。本书的最大优点是为程序员描述计算机系统的实现细节,通过描述程序是如何映射到系统上,以及程序是如何执行的,使读者更好地理解程序的行为为什么是这样的,以及造成效率低下的原因。 相对于第1版,本版主要是反映了过去十年间硬件技术和编译器的变化,具体更新如下: 1. 对系统的介绍(特别是实际使......一起来看看 《深入理解计算机系统(英文版·第2版)》 这本书的介绍吧!