首先环境介绍一下:

1.IntelliJ IDEA 2017.1

2.thrift-0.9.3

相信大家在看我这篇文章的时候已经对thrift通信框架已有所调研,这里就不再赘述了,直接进入正题:

<1>创建HelloWorld.thrift

namespace java com.thrift.demo

service HelloWorldService{
string sayHello(1:string username)
}

<2>利用thrift生成HelloWorld.java文件,cmd指令下进入thrift当前目录下输入命令

thrift.exe -gen java HelloWorld.thrift

java为要生成文件的类型,HelloWorld.thrift为前面的文件。

<3>创建IDEA 下的maven项目,其中的好处就不一一说明了,最重要的一条就是可以在pom.xml文件中添加dependency,能够在项目中自行下载库文件,方便协同开发中出现的开发包不对应的情况。

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.9.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>

上述pom引入相应的依赖项就可以让它自行下载。

<4>项目的结构图当前如下所示:

File--Project Structure--Modules,在main文件夹下新建java文件夹并设为Soueces类型(因为在Sources文件下可以新建java class文件)

同时将thrift生成的HelloWorld.java文件复制到该目录下

<5>实现接口Iface

java代码:HelloWorldImpl.java

 package com.jmust.thrift.demo;

 import org.apache.thrift.TException;

 /**
* Created by Administrator on 2017/3/31.
*/
public class HelloWorldImpl implements HelloWorldService.Iface { public HelloWorldImpl() {
} @Override
public String sayHello(String username) throws TException {
return "Hi,"+username+"Welcome to my blog http://www.cnblogs.com/zfygiser";
}
}

<6>服务端TSimpleServer

java代码:HelloServer.java

/**
* Created by Administrator on 2017/3/31.
*/
package com.jmust.thrift.demo; import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket; public class HelloServer {
public final static int SERVER_PORT = 7099;
private static String SERVER_IP = "localhost"; public void startServer() {
try {
System.out.println("HelloWorld Server start..."); TServerSocket serverTransport = new TServerSocket(SERVER_PORT);
TServer.Args args = new TServer.Args(serverTransport);
TProcessor process = new HelloWorldService.Processor(new HelloWorldImpl());
TBinaryProtocol.Factory portFactory = new TBinaryProtocol.Factory(true, true);
args.processor(process);
args.protocolFactory(portFactory); TServer server = new TSimpleServer(args);
server.serve(); } catch (Exception e) {
System.out.println("Server start error");
e.printStackTrace();
}
} public static void main(String[] args) {
HelloServer server = new HelloServer();
server.startServer();
}
}

<7>编写客户端代码

java代码:Client.java

package com.jmust.thrift.demo;

import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport; /**
* Created by Administrator on 2017/4/1.
*/
public class Client {
public static final int SERVER_PORT = 7099;
public static final String SERVER_IP = "localhost"; public void startClient(String username) {
TTransport tTransport = null;
try {
tTransport = new TSocket(SERVER_IP, SERVER_PORT);
//协议要和服务端一致
TProtocol protocol = new TBinaryProtocol(tTransport);
HelloWorldService.Client client = new HelloWorldService.Client(protocol);
tTransport.open(); String result = client.sayHello(username);
System.out.println("Thrift client result=" + result);
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
Client client = new Client();
client.startClient("zfy");
}
}

客户端测试成功,截图如下:

Java thrift服务器和客户端创建实例的更多相关文章

  1. openstack私有云布署实践【19 通过python客户端 创建实例VM指定IP地址】

    还有一种创建方式 是使用py开发工具,调用openstackclient的方法进行创建实例 ,好处就是可随意指定我们要的虚拟机IP地址,需求的场景就是,某天我们需要主动分配一个比较熟知的IP用作某个服 ...

  2. 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world

    2016最简单windows(10) wamp 30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world thrift是什么 最简单解释 thrift是用来帮助各个编程语 ...

  3. golang thrift 源码分析,服务器和客户端究竟是如何工作的

    首先编写thrift文件(rpcserver.thrift),运行thrift --gen go rpcserver.thrift,生成代码 namespace go rpc service RpcS ...

  4. Netty——简单创建服务器、客户端通讯

    Netty 是一个基于NIO的客户.服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用.Netty相当简化和流线化了网络应用的编程开发过程 ...

  5. node.js中使用http模块创建服务器和客户端

    node.js中的 http 模块提供了创建服务器和客户端的方法,http 全称是超文本传输协议,基于 tcp 之上,属于应用层协议. 一.创建http服务器 const http = require ...

  6. Java中的服务器与客户端的简单连接

    Java中重点之一就是服务器与客户端的连接,因为是在同一台PC上,所以就设置服务器的地址为“localhost”,注意,我当时试着设置其他名称,但都不行,这个原因还请老司机告一下.另外还要注意,服务端 ...

  7. C#实现WebSocket协议客户端和服务器websocket sharp组件实例解析

    看到这篇文章的题目,估计很多人都会问,这个组件是不是有些显的无聊了,说到web通信,很多人都会想到ASP.NET SignalR,或者Nodejs等等,实现web的网络实时通讯.有关于web实时通信的 ...

  8. 【代码笔记】Java深入学习——实现客户端发送文件到服务器的文件传输

    Server.java package com.huaxin.lesson02; import java.io.FileOutputStream; import java.io.InputStream ...

  9. 一个 Java 的 Socket 服务器和客户端通信的例子

    一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程: 先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请 ...

随机推荐

  1. SpringBoot之旅第三篇-日志

    一.前言 日志对于一个系统的重要性不言而喻,日志能帮我们快速定位线上问题,市场上存在非常多的日志框架,比较常见的有 JUL,JCL,Log4j,Log4j2,Logback.SLF4j.jboss-l ...

  2. .netcore2.1在控制器中和类中,获取appsettings中值的方法

    一般我们在开发项目中,都会从配置文件中获取数据库连接信息.自定义参数配置信息等. 在.netcore中在控制器和自定义类中,获取配置文件中参数方式如下: appsettings.json { &quo ...

  3. 简述private,protected,public,internal修饰符的访问权限

    private:私有成员,在类的内部才可以访问 protected:保护成员,在类的内部和继承类中可以访问 public:公共成员,完全公开,没有访问限制 internal:当前程序集内可以访问

  4. 1.JAVA-Hello World

    1.Java开发介绍 J2SE:Java 2 Platform Standard Edition(2005年之后更名为JAVA SE). 包含构成Java语言核心的类.比如:数据库连接.接口定义.数据 ...

  5. oppo5.0以上系统怎么样不Root激活Xposed框架的经验

    在非常多单位的引流或者业务操作中,基本上都需要使用安卓的黑高科技术Xposed框架,前几天我们单位购来了一批新的oppo5.0以上系统,基本上都都是基于7.0以上版本,基本上都不能够获取root超级权 ...

  6. SQL Server的Linked Server支持使用SEQUENCE吗?

    SQL Server的Linked Server支持使用SEQUENCE吗?   SQL Server 2012开始支持序列(SEQUENCE),今天遇到有个同事咨询,能否在LINKED SERVER ...

  7. Windows下安装lxml库方法

    如果直接用pip install lxml安装成功,那么恭喜!!! 一般在windows安装都十分蛋疼,pip无法直接安装(提示错误一大片,此处省略……) 因此选择wheel安装方式,步骤如下: 1. ...

  8. python3 文件操作练习 r+ w+ a+ 的理解

    突然来一句:“慨然有经略四方之志” 文件操作三部曲:1.先用open打开 2.再写关闭  3.再回到中间写操作     为啥要刚打开就关闭 那是很容易望,所以先写上... 基本格式 f = open( ...

  9. Storm入门(六)深入理解可靠性机制

    转自http://blog.csdn.net/zhangzhebjut/article/details/38467145 一 可靠性简介 Storm的可靠性是指Storm会告知用户每一个消息单元是否在 ...

  10. 又双叒叕换,微软这次换Edge了

    http://tech.sina.com.cn/it/2018-12-06/doc-ihmutuec6481129.shtml 其实两个月前跟一个微软的前同事聊天已经听说过微软要基于Chromiun来 ...