使用Socket进行远程调用
来源:互联网 发布:rsync windows 编辑:程序博客网 时间:2024/06/05 02:46
现在服务端提供某个方法比如getPrice(int size),而服务端需要调用这个方法,使用socket进行通信来完成调用。需要客户端与服务端进行连接,服务端拿到客户端提供的参数,调用getPrice方法,将获得的结果返回给客户端。客户端这里只输出到控制台。
提供服务的程序
public class Shirt { public String getPrice(int size){ return "T-Shirt价格为:"+size*3; }}
服务端程序
/** * 服务端 * @author 12706 */public class ServiceServer { public static void main(String[] args) { //创建ServerSocket绑定到本机的8081端口 ServerSocket server; try { server = new ServerSocket(); server.bind(new InetSocketAddress("localhost",8081)); while (true){ // 接受客户端的连接请求;accept是一个阻塞方法,会一直等待,到有客户端请求连接才返回 Socket socket = server.accept(); new Thread(new DataService(socket)).start(); } } catch (Exception e) { e.printStackTrace(); } }}
public class DataService implements Runnable { private Socket socket = null; public DataService(Socket socket) { this.socket = socket; } public void run() { try { //读取客户端发送的消息 //获取输入流 InputStream inputStream = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); //从网络通信输入流中读取客户端发送过来的数据 //注意:socketinputstream的读数据的方法都是阻塞的 String size = br.readLine(); //调用函数获得结果返回给客户端 Shirt shirt = new Shirt(); String price = shirt.getPrice(new Integer(size)); //获取输出流 OutputStream outputStream = socket.getOutputStream(); PrintWriter pw = new PrintWriter(outputStream); pw.println(price); pw.flush(); } catch (IOException e) { e.printStackTrace(); }finally { if (socket!=null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
客户端程序
public class ServiceClient { static Socket socket = null; public static void main(String[] args) { try { Scanner scanner = new Scanner(System.in); System.out.println("输入size:"); int size = scanner.nextInt(); //建立连接 socket = new Socket("localhost", 8081); //获取输出流,向服务端发送数据 OutputStream outputStream = socket.getOutputStream(); PrintWriter pw = new PrintWriter(outputStream); pw.println(size); pw.flush(); //获取输入流,读取服务端发送的消息 InputStream inputStream = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); String line = br.readLine(); System.out.println(line); scanner.close(); } catch (Exception e) { e.printStackTrace(); }finally { if (socket != null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
测试:
启动服务端程序。
接着启动客户端程序,输入参数,获得服务端返回的结果
阅读全文
0 0
- 使用Socket进行远程调用
- Java利用Socket进行远程过程调用
- 使用Spring HTTP invoker进行远程调用
- 使用XML RPC进行远程调用
- 使用XML RPC进行远程调用
- 使用SpringBoot进行远程RMI调用
- 使用Hessian来进行远程调用
- 在Android上使用Flamingo进行远程调用的实例
- java中使用rmi进行远程方法调用
- 使用Spring的HttpInovoker进行远程方法调用
- Python调用远程Socket接口
- Socket实现远程调用实例
- 使用Socket进行通信
- 使用Socket进行通信
- 远程调用技术代码追踪(socket)
- 远程调用技术代码追踪之(socket)
- 远程调用技术代码追踪(socket)
- 远程调用技术代码追踪(socket)
- Volley学习笔记
- elastic search 基本概念
- Java之——Web项目中DLL文件动态加载方法
- hdu 4027 Can you answer these queries?
- eclipse使用插件远程调试Hadoop
- 使用Socket进行远程调用
- 实验一Linux操作系统的安装
- Postgresql相关问题
- 【Linux】命令整理(一)
- KafkaUtils.createDirectStream
- 头文件懒得打系列
- Android之invalid address or address of corrupt block 0xabb494a0 passed to dlfree崩溃解决办法
- Python 模块安装
- WebSocket初探