Java——实现客服端和服务器计算
来源:互联网 发布:网络支付安全技术论文 编辑:程序博客网 时间:2024/06/05 12:40
这次看到以前对Socket网络编程有点弱,看完一些资料、各位网友对网络编程的相关学习,接下来我来展示一个简单的Socket网络编程——客服端向服务器发送计算表达式及服务器发送计算结果。客服端与服务器之间的相关处理步骤分为:
Server端所要做的事情主要是建立一个通信的端点,然后等待客户端发送的请求。典型的处理步骤如下:
1. 构建一个ServerSocket实例,指定本地的端口。这个socket就是用来监听指定端口的连接请求的。
2. 调用socket的accept()方法来获得下面客户端的连接请求。通过accept()方法返回的socket实例,建立了一个和客户端的新连接。
3.首先通过DataInputStream 读取 客服端把控制台输入的计算表达式发送到服务器的数据,这是以字符串的形式发送过来的。
4.处理数据,通过String.split(“\+”) 进行相关的算木切割识别,通过类型转化。
5.通过DataOutputStream 发送计算的结果到客服端
package serverCaculClient;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketAddress;public class Server { // 服务器对象 private static ServerSocket serverSocket; public static String split(String str){ String[] s; if((s=str.split("\\+")).length>1) return String.valueOf(Integer.parseInt(s[0], 10)+Integer.parseInt(s[1], 10)); if((s=str.split("\\-")).length>1) return String.valueOf(Integer.parseInt(s[0], 10)-Integer.parseInt(s[1], 10)); if((s=str.split("\\*")).length>1) return String.valueOf(Integer.parseInt(s[0], 10)*Integer.parseInt(s[1], 10)); if((s=str.split("\\/")).length>1) return String.valueOf(Integer.parseInt(s[0], 10)/Integer.parseInt(s[1], 10)); return "The expression is not regular"; } public static void start() { try { // 定义端口 serverSocket = new ServerSocket(8888); System.out.println("server启动..."); //客户端接入 Socket socket = serverSocket.accept(); //获取连接的客户端的SocketAddress SocketAddress clientAddress=socket.getRemoteSocketAddress(); //打印输出连接客户端地址信息 System.out.println("Handling client at"+clientAddress); // 读取客户端数据 DataInputStream input = new DataInputStream(socket.getInputStream()); String clientInputStr = input.readUTF();//这里要注意和客户端输出流的写方法对应,否则会抛 EOFException // 处理客户端数据 System.out.println("客户端发过来的内容:" + clientInputStr); System.out.println("计算结果是:"+split(clientInputStr));// System.out.println("数字转化成字符:"+String.valueOf(split(clientInputStr))); // 向客户端回复信息 DataOutputStream out = new DataOutputStream(socket.getOutputStream()); out.writeUTF(split(clientInputStr)); //客户端关闭连接时,关闭连接// System.out.println("客户端关闭连接");// socket.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { new Server().start(); }}
客户端的请求过程稍微有点不一样:
1.构建Socket实例,通过指定的远程服务器地址和端口来建立连接。
2.通过Socket实例包含的DataInputStream和DataOutputStream来进行数据的读写。
3.通过new BufferedReader(newInputStreamReader(System.in)).readLine() 得到控制台输入的表达式的字符串,再通过DataOutputStream发送到服务器。
5.通过DataInputStream接受服务器的计算结果。
package serverCaculClient;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.Socket;import java.net.SocketException;import java.net.UnknownHostException;public class Client { public static void start(){ try { //根据服务器地址和端口号实例化一个Socket实例 Socket socket=new Socket("127.0.0.1",8888); System.out.println("Connected to server..."); //读取服务器端数据 DataInputStream input = new DataInputStream(socket.getInputStream()); //向服务器端发送数据 DataOutputStream out = new DataOutputStream(socket.getOutputStream()); System.out.print("请输入要计算的表达式: \t"); String str = new BufferedReader(new InputStreamReader(System.in)).readLine(); out.writeUTF(str); String ret = input.readUTF(); if(ret.equals("The expression is not regular")){ System.out.println("The expression is not regular"); } else { System.out.println("服务器端返回过来的是: " + ret); //关闭连接 socket.close(); System.out.println("断开连接"); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { new Client().start(); }}
如果想要知道对Java-TCP/UDP Socket 网络编程 进一步了解,
可以参考http://shmilyaw-hotmail-com.iteye.com/blog/1556187
May-The-Good-Luck-Be-With-You
- Java——实现客服端和服务器计算
- cxf+spring实现webservice含服务器和客服端
- rtsp的客服端和服务器
- java socke t一个服务器可以向多个客服端发送信息实现步骤
- 利用java在服务器和客服端建立连接,进行通讯(代码实例)
- java学习之服务端和客服端
- Subversion快速入门教程,软件下载,服务器和客服端安装,导入项目,基本客服端操作
- 用asp.net获取服务器和客服端有关信息
- java--通过socket和多线程进行多个客服端与服务器的简单通讯--基于tcp
- tcp客服端服务器模型
- oracle9i客服端连接服务器
- 服务器跳转和客服机跳转
- 分布式计算——实现简单的浏览器和web服务器
- dwr3实现服务器向客服端精准推送消息实例详解
- java实现一个简单的HTTP服务器,带打开网页和计算功能
- 简单游戏服务器客服端搭建
- 服务器获取客服端ip方法
- Tcp客服端并发访问服务器
- FPGA笔记(七)-配置PLL
- css3 动画 js动态创建
- 蓝牙uuid
- 用js实现163网易邮箱注册界面
- day_06python模块学习01
- Java——实现客服端和服务器计算
- 用JQuery去实现单个表格中的td数据修改
- 黑马程序员_Java基础_我的Day11学习笔记
- CSS3 background-clip 属性和 box-sizing 属性
- ios 次级页面向右滑动返回父页面
- 【棋盘上的BFS】滑旱冰
- 生活杂谈 -- 番茄工作法的使用
- Ajax的属性方法事件以及简单案例
- 主席树 (函数式线段树)