1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java——实现客服端和服务器计算

Java——实现客服端和服务器计算

时间:2018-11-15 08:39:40

相关推荐

Java——实现客服端和服务器计算

这次看到以前对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 .ServerSocket;import .Socket;import .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();//获取连接的客户端的SocketAddressSocketAddress 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 .Socket;import .SocketException;import .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-/blog/1556187

May-The-Good-Luck-Be-With-You

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。