展开全部

服务器端CalculateServer.java:package serverModule;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintStream;

import java.net.ServerSocket;

import java.net.Socket;

public class CalculateServer {

public static void main(String [] args){

CalculateServer calculateServer=new CalculateServer();

try {

calculateServer.startServer();

} catch (Exception e) {

e.printStackTrace();

System.out.println("服务器出错!");

}

}

//把输入的字符串转换成float数组

public float [] convertToArray(String inputString){

String numberString=inputString.substring(inputString.indexOf('[')+1,inputString.indexOf(']'));

String [] stringArray=numberString.split(",");

float [] numberArray=new float[2];

for(int i=0;i<2;i++){

try {

numberArray[i]=Float.parseFloat(stringArray[i]);

}catch (NumberFormatException e){

System.out.println("数字错误!");

return null;

}

}

return  numberArray;

}

//计算数组结果32313133353236313431303231363533e59b9ee7ad9431333337373561

public String getResultString(float [] numberArray){

float[] result=new float[4];

result[0]=numberArray[0]+numberArray[1];

result[1]=numberArray[0]=numberArray[1];

result[2]=numberArray[0]*numberArray[1];

result[3]=numberArray[0]/numberArray[1];

String resultString=String.format("[%1$s,%2$s,%3$s,%4$s]",result[0],result[1],result[2],result[3]);

return  resultString;

}

//socketServer

public void startServer() throws Exception{

ServerSocket serverSocket= null;

PrintStream out=null;

BufferedReader in=null;

Socket socketObj=null;

try {

serverSocket = new ServerSocket(1888);

System.out.println("服务器启动...");

socketObj=serverSocket.accept();

out=new PrintStream(socketObj.getOutputStream());

in=new BufferedReader(new InputStreamReader(socketObj.getInputStream()));

} catch (IOException e) {

System.out.println("服务器启动失败!");

}

boolean flag=true;

CalculateServer cs=new CalculateServer();

try {

while (flag){

String inputString=in.readLine();

System.out.println("接收到数据:"+inputString);

if(inputString.equals("bye")){

flag=false;

continue;

}

if(inputString==null||inputString.length()<5) {

out.println("你的输入有误 !");

}else {

out.println(cs.getResultString(cs.convertToArray(inputString)));

}

}

}catch (Exception e){

out.println("数据输入有误!");

}finally {

out.close();

in.close();

socketObj.close();

serverSocket.close();

}

}

}

客户端CalculateClient.javapackage clientModule;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintStream;

import java.net.Socket;

public class CalculateClient {

public static void main(String [] args){

CalculateClient calculateClient=new CalculateClient();

try {

calculateClient.startClient();

} catch (Exception e) {

System.out.println("启动失败!");

}

}

public void startClient () throws Exception{

Socket socketObj=new Socket("localhost",1888);

PrintStream out=null;

BufferedReader in=null;

out=new PrintStream(socketObj.getOutputStream());

in=new BufferedReader(new InputStreamReader(socketObj.getInputStream()));

BufferedReader localInput=null;

localInput=new BufferedReader(new InputStreamReader(System.in));

boolean flag=true;

while (flag) {

System.out.println("请输入两个数字,格式为[number1,number2],输入bye则退出:");

String inputString = localInput.readLine();

out.println(inputString);

if(inputString.equals("bye")){

flag=false;

}else{

String input=in.readLine();

System.out.println("服务器返回结果为:");

System.out.println(input);

}

}

out.close();

in.close();

localInput.close();

socketObj.close();

}

}

tcp socket编程 java_JAVA TCP Socket编程 计算题相关推荐

  1. tcp长连接java_JAVA TCP长连接

    做了一个指纹门锁,需要用TCP长连接进行服务端和门锁间的数据通信. 目前JAVA写socket服务端,门锁连接JAVA服务端. 服务端开了一个线程在监听门锁发来的数据(此处必须实时监听数据) 在监听的 ...

  2. socket网络编程 java_Java Web 基础(一) 基于TCP的Socket网络编程

    一.Socket简单介绍 Socket通信作为Java网络通讯的基础内容,集中了异常.I/O流模式等众多知识点.学习Socket通信,既能够了解真正的网络通讯原理,也能够增强对I/O流模式的理解. 1 ...

  3. 1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

     1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端 ...

  4. Python3之socket编程(TCP/UDP,粘包问题,数据传输、文件上传)

    一.socket的定义 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后 ...

  5. socket通信需要网线连接吗_从socket到TCP协议,透彻理解网络编程

    进行程序开发的同学,无论Web前端开发.Web后端开发,还是搜索引擎和大数据,几乎所有的开发领域都会涉及到网络编程.比如我们进行Web服务端开发,除了Web协议本身依赖网络外,通常还需要连接数据库,而 ...

  6. python socket 主动断开_Python网络编程tcp详解(基础篇十四)

    网络编程tcp 1 TCP详解 <1> tcp概述 TCP:英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的.可靠的.基于字节流的 ...

  7. socket中的TCP编程(调用免费聊天的机器人实现自动回复)

    socket中的TCP编程(调用免费聊天的机器人实现自动回复) 在无聊时间复习了socket编程,写了这个简易代码!!注意要在联网状态下跑 1:服务器模块: import socket import ...

  8. TCP与UDP协议,socket套接字编程,通信相关操作

    文章目录 TCP与UDP协议 TCP协议 ==三次握手== ==四次挥手== UDP协议 TCP与UDP的区别 应用层 socket套接字 代码优化 循环通信 半连接池 粘包问题 TCP与UDP协议 ...

  9. Socket编程概念和 Socket之异步TCP客户端断线重连

    一:什么是SOCKET​​​​​​​ socket的英文原义是"孔"或"插座".作为进程通信机制,取后一种意思.通常也称作"套接字",用于描 ...

最新文章

  1. 深入掌握Java技术 EJB调用原理分析
  2. 2021首期Nature封面:牛津大学ML算法实现10万高压非晶硅原子的模拟​ | AI日报
  3. SAP WM初阶之2-Step Picking创建的Group查询报表
  4. SQL Server服务器名称填写IP不能访问问题解决
  5. cannot import name 'multiarray'
  6. 加了try-catch也能自动定位到异常代码[VS Tips]
  7. Codeforces 603A Alternative Thinking
  8. 21天学通HTML5和CSS3第二版,21天学通HTML5+CSS3
  9. HTML5调用手机前置摄像头或后置摄像头拍照,canvas显示,经过Android测试
  10. copy-maven-plugin - where is it configured - Maven原理探究
  11. mono for android 使用Tab 控件
  12. hibernate正向生成数据库表以及配置——Teacher.java
  13. 防止System.exit调用
  14. 大前端的自动化工厂(3)—— babel
  15. 项目启动过后,停在了加载mapper xml文件过程中
  16. 全排列---STL方法与递归方法
  17. FP-growth算法,fpgrowth算法详解
  18. 数理统计——随机过程
  19. studio 3T 使用
  20. html怎么动态背景,HTML 动态背景

热门文章

  1. Ubuntu下自定义调整CPU工作频率(用于省电或提高性能都好用)
  2. 2017 Multi-University Training Contest - Team 5 1.Rikka with Candies(压位)
  3. mybatis 之 parameterType=list1
  4. mysql5.6 主从同步
  5. [osx] android studio下修改avd的hosts文件
  6. 那些不能遗忘的知识点回顾——操作系统系列(笔试面试高频题)
  7. asp.net中后台javaScrip的使用
  8. hibernate配置文件hibernate.cfg.xml的详细解释
  9. Ncurses 命令行图形库
  10. Bzoj4556 [Tjoi2016Heoi2016]字符串