C#实现Thrift服务端与客户端
2017-08-12 14:48
573 查看
这一篇是将Android和C#实现Thrift服务端和客户端中C#部分单独拆分开来的,方便不需要Android的开发者使用。
编写Thrift文件
写个简单的,有输入参数,无返回值,文件命名为 HelloWorld.thrift
根据Thrift文件生成对应的C#和java文件,生成的C#和java都只有一个文件。
![](https://img-blog.csdn.net/20170811174133196?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHd3bDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
可以看到我用的是Thrift 0.10.0版本
C# Thrift服务端和客户端实现,并实现消息发送及接收
创建一个WinForm应用程序,命名为Thrift_HelloWorld_Csharp。
将生成的C#文件拷到项目中,并包含在项目里。在Nuget中添加thrift-csharp的引用,0.10.0版本的。
目录结构如图:
![](https://img-blog.csdn.net/20170811174530404?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHd3bDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
最后要实现的效果是:当前程序启动一个Thrift服务,并且能通过当前程序调用Thrift Client发送消息到服务端。
效果如下:
![](https://img-blog.csdn.net/20170811184731219?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHd3bDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
点击【启动】即可启动C#服务端,填写完正确的端口号,点击【发送】即可完成消息发送,因为是在本机测试,所以Ip地址固定为127.0.0.1。输入Android映射出来的端口号即可完成与Android服务端通信。
Thrift Server 代码:
调用Run方法即可启动Thrift服务,需另开一个线程运行此方法才不会阻塞下面的功能。
Thrift Client发送消息至服务端代码:
调用Say方法即可实现消息发送。当将port设置为服务端端口号时即可实现发送消息至当前服务端。
就是这么简单。
源码地址:
C#实现的Thrift服务端与客户端
编写Thrift文件
写个简单的,有输入参数,无返回值,文件命名为 HelloWorld.thrift
service HelloWorldService{ void SayHello(1:string msg); }
根据Thrift文件生成对应的C#和java文件,生成的C#和java都只有一个文件。
可以看到我用的是Thrift 0.10.0版本
C# Thrift服务端和客户端实现,并实现消息发送及接收
创建一个WinForm应用程序,命名为Thrift_HelloWorld_Csharp。
将生成的C#文件拷到项目中,并包含在项目里。在Nuget中添加thrift-csharp的引用,0.10.0版本的。
目录结构如图:
最后要实现的效果是:当前程序启动一个Thrift服务,并且能通过当前程序调用Thrift Client发送消息到服务端。
效果如下:
点击【启动】即可启动C#服务端,填写完正确的端口号,点击【发送】即可完成消息发送,因为是在本机测试,所以Ip地址固定为127.0.0.1。输入Android映射出来的端口号即可完成与Android服务端通信。
Thrift Server 代码:
public class HelloWorldServer : HelloWorldService.Iface { public static void Run(int port) { HelloWorldServer client = new HelloWorldServer(); HelloWorldService.Processor processor = new global::HelloWorldService.Processor(client); TServerTransport transport = new TServerSocket(port); TServer server = new TThreadPoolServer(processor, transport); Console.WriteLine("Starting the server..."); server.Serve(); transport.Close(); } public void SayHello(string msg) { Console.WriteLine(string.Format("{0:yyyy/MM/dd hh:mm:ss} {1}", DateTime.Now, msg)); } }
调用Run方法即可启动Thrift服务,需另开一个线程运行此方法才不会阻塞下面的功能。
Thrift Client发送消息至服务端代码:
public static class HelloWorldClient { public static void Say(int port, string msg, string ip = "127.0.0.1") { TTransport transport = new TSocket(ip, port); TProtocol protocol = new TBinaryProtocol(transport); HelloWorldService.Client client = new HelloWorldService.Client(protocol); transport.Open(); try { client.SayHello(msg); } catch (TApplicationException x) { Console.WriteLine(x.StackTrace); } finally { transport.Close(); } } }
调用Say方法即可实现消息发送。当将port设置为服务端端口号时即可实现发送消息至当前服务端。
就是这么简单。
源码地址:
C#实现的Thrift服务端与客户端
相关文章推荐
- Thrift小试牛刀:实现Windows_C#_客户端与Linux_C++_服务端通信
- Android和C#实现Thrift服务端和客户端
- Thrift 客户端 C# ---实现zookeeper监视(1)
- C#中TCP实现多个客户端与服务端数据与文件的传输
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- [原创]C#实现.Net Remoting服务端与客户端通信
- Unity使用C#实现简单Scoket连接及服务端与客户端通讯
- 用thrift实现客户端和服务端的C++代码
- 用thrift实现客户端和服务端的C++代码 - 金美光的小屋 - 博客频道 - CSDN.NET
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- Thrift交流(二)thrift服务端和客户端实现 Nifty
- Thrift 客户端 C# ---从zookeeper获取服务器信息、实现负载(2)
- 实现PHP服务端和c#客户端数据交换
- thrift JAVA服务端 python客户端的实现
- [通信] C# TCP实现多个客户端与服务端 数据 与 文件的传输
- thrift JAVA服务端 python客户端的实现
- [转载]C# TCP实现多个客户端与服务端 数据 与 文件的传输
- Untiy中用C#实现TCP通讯(Socket通讯)服务端与客户端皆可
- Spring集成Thrift,实现服务端和客户端代理
- Thrift 各种服务端和客户端实现