thrift就是一个跨语言调用的软件框架。
首先运用thrift生成一个客户端与服务端文件,
客户端:就是设置ip地址等信息,并调用服务端信息。
import cn.thrift.Tensorflow_Service; import org.apache.thrift.TException; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.transport.TSocket; import org.apache.thrift.transport.TTransport; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class Client { private static final String SERVER_IP = "172.32.0.60"; private static final int SERVER_PORT = 8090; private static final int TIMEOUT = 30000; public static String GetImageStr(String imgFile) {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理 InputStream in = null; byte[] data = null; //读取图片字节数组 try { in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } //对字节数组Base64编码 BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(data);//返回Base64编码过的字节数组字符串 } public void startClient() { TTransport transport = null; try { transport = new TSocket(SERVER_IP, SERVER_PORT, TIMEOUT); // 协议要和服务端一致 TProtocol protocol = new TBinaryProtocol(transport); Tensorflow_Service.Client client = new Tensorflow_Service.Client(protocol); transport.open(); String img_path ="E:\\thrift_tensorflow\\cropped_panda.jpg"; String img_base = GetImageStr(img_path); String result = client.tensorflow(img_base); System.out.println("Thrift client result is: " + result); } catch (TException e) { e.printStackTrace(); } finally { if (null != transport) { transport.close(); } } } /** * @param args */ public static void main(String[] args) { Client client = new Client(); client.startClient(); } }
服务端:调用后台算法处理程序
import cn.thrift.Tensorflow_Service; import cn.thrift.TensorflowImpl; 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 Server { private static final int SERVER_PORT = 8090; public void startServer() { try { System.out.println("Tensorflo