Java利用Socket进行远程过程调用
来源:互联网 发布:央视评论网络直播乱象 编辑:程序博客网 时间:2024/06/05 08:19
需求概述
服务器上有一个getData()方法,客户端想调用服务器的getData()方法,此时必须通过RPC来进行调用了。WebService太冗余,为了提高性能,决定直接用socket进行实现。
实现代码(Socket通讯模板代码)
BusinessServer.java
package com.mrbcy.bigdata.basic.socket;import java.io.IOException;import java.net.InetAddress;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;public class BusinessServer { public static void main(String[] args) throws Exception { // 创建一个ServerSocket,绑定到8899上 ServerSocket serverSocket = new ServerSocket(); serverSocket.bind(new InetSocketAddress(8899)); // 接受客户端的连接请求;accept是一个阻塞方法,会等待到客户端请求连接为止。 while(true){ Socket clientSocket = serverSocket.accept(); InetAddress inetAddress = clientSocket.getInetAddress(); System.out.println("客户端连接:" + inetAddress.getHostName() + ":" + clientSocket.getPort()); // 启动一个线程来处理业务 new Thread(new BusinessHandler(clientSocket)).start(); } }}
BusinessHandler.java
package com.mrbcy.bigdata.basic.socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;public class BusinessHandler implements Runnable{ private Socket clientSocket; private InputStream is = null; private OutputStream os = null; public BusinessHandler(Socket clientSocket) { this.clientSocket = clientSocket; } // 业务逻辑,跟客户端进行数据交互 @Override public void run() { try { is = clientSocket.getInputStream(); os = clientSocket.getOutputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); // 获得客户端传入的参数,客户端一定要带一个回车符 String param = br.readLine(); // 获取数据 GetDataServiceImpl service = new GetDataServiceImpl(); String result = service.getData(param); // 将调用结果输出到客户端socket中 PrintWriter pw = new PrintWriter(os); pw.println(result); pw.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { is.close(); os.close(); clientSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
GetDataServiceImpl.java
package com.mrbcy.bigdata.basic.socket;public class GetDataServiceImpl { public String getData(String param){ return "ok-" + param; }}
BusinessClient.java
package com.mrbcy.bigdata.basic.socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;public class BusinessClient { public static void main(String[] args) throws Exception { // 向服务器发出请求建立连接 Socket socket = new Socket("localhost",8899); // 从socket中获取输入输出流 InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); PrintWriter pw = new PrintWriter(out); pw.println("hello"); pw.flush(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String result = br.readLine(); System.out.println(result); socket.close(); }}
0 0
- Java利用Socket进行远程过程调用
- 使用Socket进行远程调用
- 用SOAP进行远程过程调用
- 利用java socket实现远程视频
- 利用Socket进行Java网络编程
- 利用Socket进行Java网络编程
- FLEX利用Socket与java进行通信
- Java中利用Socket进行通信
- Java利用Axis远程调用WebService接口
- ASP.NET 3.5怎么利用页面方法进行远程调用
- RPC(远程过程调用) JAVA简单实现
- 用SOAP进行远程过程调用(RPC)
- JAVA利用HttpClient进行HTTPS接口调用
- JAVA利用HttpClient进行HTTPS接口调用
- JAVA利用HttpClient进行HTTPS接口调用
- JAVA RMI远程调用Socket服务异常--安全管理器
- TCP通过 JAVA Socket 实现 RPC 远程调用
- java 实现即时聊天设计(利用ip进行远程通信)
- 数字三角形
- angular表单验证及 提交功能实现
- 使用Vgrant安装Homestead构建Laravel环境
- 安卓Andriod使用入门(二十七)【点赞动画】
- 多文件多线程断点续传项目练习总结
- Java利用Socket进行远程过程调用
- 转载 同龄人2016年的一篇博文 用来自励
- 数学建模学习笔记
- 利用 pwntools 编写 socket 脚本
- C++ 构造函数使用 ":成员变量(形参)" 的形式给类里面成员变量赋值,如果成员变量和形参是指针,那么需要注意的事项
- 最大公约数与最小公倍数
- 工作项目 17年2月1日 关于迭代法的应用
- 40. Combination Sum II
- Mac快捷键盘记录