JAVA TCP Socket编程 计算题

发布网友

我来回答

2个回答

热心网友

服务器端CalculateServer.java:

package serverMole;


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;
    }
    //计算数组结果
    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.java

package clientMole;

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();
    }
}

热心网友

按照你的要求编写的TCPClient.java   TCPServer.java代码在附件中,用winrar.exe软件压缩,解压即可,先运行TCPServer程序再运行TCPClient,然后在TCPClient的text框中输入两个数之间用逗号隔开,TCPServer即可返回4.5,-1,5,4.5,0.5

追问能给个直接在cmd.exe中显示结果的代码吗

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com