C#使用Thrift简介,C#客户端和Java服务端相互交互
C#使用Thrift简介,C#客户端和Java服务端相互交互
本文主要介绍两部分内容:
- C#中使用Thrift简介
- 用Java创建一个服务端,用C#创建一个客户端通过thrift与其交互。
- 用纯C#实现Client和Server
其中使用到RPC学习----Thrift快速入门和Java简单示例,这篇文章创建的Java服务端。
一、C#中使用Thrift简介
关于rpc的简介,可以参考:RPC学习----Thrift快速入门和Java简单示例
1、下载thrift
1)点击下载:thrift-0.9.1.tar.gz(或者http://thrift.apache.org/download)
2)Thrift compiler for Windows (thrift-0.9.1.exe)
两个都要下载。
2、引入thrift.dll
这里将下载好的.gz文件解压后,然后找到lib目录

用vs打开后,如下图所示,然后右键--》重新生成---》生成thrift.dll


3、生成cs文件
hello.thrift
service HelloWorldService {
string sayHello(1:string username)
}
使用命令生成cs文件:
thrift-0.9.1.exe -gen csharp hello.thrift

关于thrift-0.9.1.exe的使用方法可以查看命令: thrift-0.9.1.exe -help

将生成的HelloWorldService.cs文件拷入项目中。
二、C#客户端发送消息到Java生成的服务端,实现跨平台操作
1、启动Java版的服务端

2、使用vs新建一个winform程序

button点击事件:

private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != null)
{
new HelloWorldServiceClient().startClient(textBox1.Text.Trim());
}
}

HelloWorldServiceClient.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Thrift.Protocol;
using Thrift.Transport;
using Thrift; namespace thrfitCsharp
{
class HelloWorldServiceClient
{
public const string SERVERIP = "localhost";
public static int SERVERPORT = 8090;
public static int TIMEOUT = 3000; public void startClient(String username)
{
TTransport transport = null;
try
{
transport = new TSocket(SERVERIP, SERVERPORT, TIMEOUT);
//协议要和服务端一致
TProtocol protocol = new TCompactProtocol(transport);
HelloWorldService.Client client = new HelloWorldService.Client(protocol);
transport.Open();
String result = client.sayHello(username);
Console.WriteLine("Thrift client result =: " + result); }
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
}
finally
{
if (null != transport)
{
//close
transport.Close();
}
}
} }
}

HelloWroldImpl.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace thrfitCsharp
{
class HelloWroldImpl : HelloWorldService.Iface
{ public string sayHello(string username){
Console.WriteLine("hello"+username);
return "hello" + username;
} }
}

效果图:

注:下面是改进版的,主要添加了纯C#版的:

纯C#版是说用C#实现客户端和服务端,下面是纯c#版的输出:

本文源码:https://github.com/amosli/rpc/tree/thriftCsharp
纯C#版实现主要参考:http://www.cnblogs.com/hanmos/archive/2011/09/15/2177891.html
C#使用Thrift简介,C#客户端和Java服务端相互交互的更多相关文章
- RPC学习--C#使用Thrift简介,C#客户端和Java服务端相互交互
本文主要介绍两部分内容: C#中使用Thrift简介 用Java创建一个服务端,用C#创建一个客户端通过thrift与其交互. 用纯C#实现Client和Server C#服务端,Java客户端 其中 ...
- Socket通讯-C#客户端与Java服务端通讯(发送消息和文件)
设计思路 使用websocket通信,客户端采用C#开发界面,服务端使用Java开发,最终实现Java服务端向C#客户端发送消息和文件,C#客户端实现语音广播的功能. Java服务端设计 packag ...
- Unity3D客户端和Java服务端使用Protobuf
转自:http://blog.csdn.net/kakashi8841/article/details/17334493 前几天有位网友问我关于Unity3D里面使用Protobuf的方法,一时有事拖 ...
- thrift配置——windows客户端与linux服务端通信(C++)
windows客户端: 1.首先要安装boost库 下载源文件 2.安装boost之前先要安装python-3.4.0.amd64,很多地方没有说,弄了很久 3.运行bootstrap.bat 生成b ...
- C++客户端访问Java服务端发布的SOAP模式的WebService接口
gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以 简单快速地开发出SOAP/XML的服务器端和客户端 Step1 使用gsoap-2.8\gsoap\bin\win32\wsdl ...
- android客户端向java服务端post发送json
android 端: private void HttpPostData() { try { HttpClient httpclient = new DefaultHttpClient( ...
- thrift例子:python客户端/java服务端
java服务端的代码请看上文. 1.说明: 这两篇文章其实解决的问题是,当使用python去访问大数据线上集群的时候,遇到两个问题: 1)python-hadoop和python-hive相关包链接不 ...
- “快的打车”创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - V2EX
"快的打车"创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - ...
- java版gRPC实战之六:客户端动态获取服务端地址
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- 大约Android PopupWindow有用Spinner控件点击APP Crash案例整理!
场景异常,如下面: android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.V ...
- 比float更好的页面布局inline-block
一:页面布局的发展过程 桌格设计 表格+css div+css的浮动布局 div+css的内联块布局 二:流行多年的浮动布局的优劣 优势: div+css浮动布局的优势,主要是相对于table布局来说 ...
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第六步---炮台&点击炮台加入英雄&英雄升级
/* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写,第一别全然照搬代码:第二能够说 ...
- linux安装和配置 mysql、redis 过程中遇到的问题记录(转)
章节目录 mysql redis linux下部署mysql和redis网上的教程很多,这里记录一下我部署.配置的过程中遇到的一些问题和解决办法. mysql ①安装完成后启动的时候报错 Starti ...
- 网络资源(3) - iBatis视频
2018_08_24 http://v.youku.com/v_show/id_XMjk2ODY2OTE2.html iBatis视频教程01
- java中的反射,invoke方法[转]
在施老师的项目中需要用到invoke,就是通过函数名反射相应的函数.一下代码简单地介绍了java反射中invoke方法,如果要具体的,可以参考魔乐核心课程的反射部分内容 package org.cur ...
- Cocos2d-x学习笔记(两)Cocos2d-x总体框架
原创文章.转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38680123 前言 上一节我们简单分析了HelloWorldproje ...
- Visio Premium 2010钥匙+激活破解方法
Visio Premium 2010钥匙+激活破解方法: 安装时能够使用的关键: GR24B-GC2XY-KRXRG-2TRJJ-4X7DC VWQ6G-37WBG-J7DJP-CY66Y-V278X ...
- android 反编译(dex 和 odex),非脑残转帖,绝对可靠
Android 反编译 反编译odex文件(比如framework.odex),若是反编译dex,直接第4步 1.因为反编译odex的工具在D:\Develop tools\android反编译工具\ ...
- MySql绿色版配置及使用详解
原文:MySql绿色版配置及使用详解 最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySq ...