tcp socket编程 java_JAVA TCP Socket编程 计算题

该博客介绍了如何使用JAVA进行TCP Socket编程,通过创建服务器端CalculateServer和客户端CalculateClient来实现两个数字的加减乘除计算。服务器端监听1888端口,接收客户端发送的数字数组,进行计算并返回结果。
摘要由CSDN通过智能技术生成

展开全部

服务器端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();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值