这次看到以前对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();//获取连接的客户端的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 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——实现客服端和服务器计算相关推荐

  1. 客服端与服务器之间传输信息,QT实现客服端和服务器之间消息和文件交互

    QT实现客服端和服务器之间消息和文件交互 文章目录 QT实现客服端和服务器之间消息和文件交互 平台环境 数据库选择与安装 交叉编译工具链GCC的安装 数据库创建数据 Qt的开发环境搭建 Web实现 T ...

  2. 8-7/8 java/redis 客服端

    如何通过正确的方式使用客户端连接redis-sentinel.使用redis-sentinel保证服务端高可用.如果服务端挂掉了,可以完成故障转移,对于client感知不到是没有作用的,加入原来连接是 ...

  3. (银行简单的管理系统)java实训小型应用开发——数据库,GUI、客服端

    一个简单的小型应用,用于模拟银行存取. 基于java多线程,GUI.操作数据库,客服端服务端. GUI界面的代码: 登录界面 package com.Gui; import java.awt.*; i ...

  4. 常见的几种服务器/客服端模型

    其实常见的几种服务器/客服端模型都可以,用餐厅,服务员,客人来解释. 餐厅:代表服务器 顾客:代表客服端 服务员:代表处理客人请求的事件 菜单:菜单方便顾客了解菜品和价格,客人读了菜单,然后点菜,相当 ...

  5. (复习)android 调用系统相机 图库 裁剪-图片上传-客服端-服务器

    引用转载http://www.cnblogs.com/eyu8874521/archive/2012/07/20/2600697.html 效果: 客服端代码: package com.cn.lxz. ...

  6. SVN 服务器和客服端搭建

    SVN 服务器和客服端搭建 一.SVN 服务器和客服端搭建 二.SVN服务端的安装步骤 三.SVN客户端的安装 四.使用SVN上传以及共享工程文件等 资料来源 来源CSDN博主「liuxiaofan_ ...

  7. JSP获得客服端MAC地址

    为什么80%的码农都做不了架构师?>>>    package com.sun.servlet;import java.io.IOException; import java.net ...

  8. 【转载】android客服端+eps8266+单片机+路由器之远程控制系统

    用android客服端+eps8266+单片机+路由器做了一个远程控制的系统,因为自己是在实验室里,所以把实验室的门,灯做成了远程控制的. 控制距离有多远------只能说很远很远,只要你手机能上网的 ...

  9. CXF 客服端调用报错

    服务端已经发布了WSDL,现在在客服端生成web service客服端代码,在eclipse中新建一个project,然后new->web services->web service cl ...

最新文章

  1. 【radar】毫米波雷达动态障碍物检测相关论文汇总(聚类、分类、稀疏2D点、4D点、雷达成像、原始数据处理)(4)
  2. AVL树:解决BST可能导致的长链问题
  3. The world at your fingertips — 天涯明月刀幕后(后记)
  4. 算法中分类与聚类的区别?
  5. oracle批量替换保留字,oracle保留字大全
  6. 不小心合并了icloud通讯录_苹果手机怎么恢复通讯录联系人号码?原来方法竟如此简单!...
  7. 已遭利用的Windows 0day漏洞 CVE-2020-1380分析
  8. json接口文档模板_在.Net Core WebAPI下给Swagger增加导出离线文档功能
  9. 过滤字符串 和 select选择后控件值变更
  10. 第二十五篇:稳定性之灰度发布
  11. 影响力最大化 IC模型+贪心算法
  12. 情侣天气推送升级简单版 项目上传github实现定时自动推送教程
  13. html header设置语言,html5 header标签 html header css布局教程
  14. workerman wss 配置备忘录
  15. Whitted光线追踪
  16. U3D: 先激活、在操作,才能起作用
  17. 赶集网否认倒闭:是不是好公司,两三年后见分晓
  18. 浏览器 Web 访问剪切板图片
  19. nao机器人行走速度_NAO5机器人的一些使用心得
  20. Web前端开发到底是什么?最通俗易懂的解释了!

热门文章

  1. 在线解密Word密码,保护您的隐私安全
  2. InfoQ十周年:不忘初心,继续前行
  3. python order函数_Python进阶内容(一)--- 高阶函数 High order function
  4. JavaScript面试题集锦
  5. [2012年四川省选]简要题解
  6. 华为CE6881交换机密码破解
  7. 老旧的钟表(数学题)
  8. 扩展卡尔曼滤波(EKF)理论讲解与实例(matlab、python和C++代码)
  9. Leetcode105. 从前序和中序遍历构造二叉树 -- 递归
  10. IDEA全局搜索(Find in Path)排除log文件/不搜索指定文件夹