简单的两操作数计算器实现(基于Java网络编程)

客户端代码实现

import java.io.*;
import java.net.*;
import java.util.Scanner;
/*
     (1)   已知client端,提交计算表达式请求,如:3+4
     (2)在server服务器端完成运算并将结果返回给client端
     (3)使用TCP/IP的套接字编程完成程序
     (4)能反复运算
*/
public class Client {
	public static void main(String args[]) {
		Scanner s=new Scanner(System.in);
//		创建键盘接收器对象
		int mess1= 0;
		char me=0;
		int mess2=0;
		Socket mysocket;
//		Socket类实现客户端套接字
		DataInputStream in=null;
//		读取服务器的回答的io流
		DataOutputStream out=null;
//		向服务器提问的io流
		try {
			mysocket=new Socket("127.0.0.1",2010);
//			端口号是服务器端与客户端链接的通路标志,通过端口号与服务器建立连接
			in=new DataInputStream(mysocket.getInputStream());
//			注意DataInputStream的创建
			out=new DataOutputStream(mysocket.getOutputStream());
//			注意DataOutputStream的创建
			while(true) {
				System.out.println("请输入您要计算的式子:");
				mess1=s.nextInt();
				me=(char)s.next().charAt(0);
				mess2=s.nextInt();
				out.writeInt(mess1);
				out.writeChar(me);
				out.writeInt(mess2);
				int answer=in.readInt();
//				读取信息,堵塞状态
				System.out.println("客户收到服务的回答:"+answer);
			}
		}catch(Exception e) {
			System.out.println("服务器已断开"+e);
		};
	}
}

服务器端代码实现

import java.io.*;
import java.net.*;
//当用到网络编程时要导java.net.*;包

public class Server {
	public static void main(String args[]) {
		int answer=0;
		ServerSocket serverForClient=null;
//		ServerSocket类实现服务器套接字(只有一个用处好像,即申请服务器端口号)
		Socket socketOnServer=null;
//		Socket类实现客户端套接字
		DataOutputStream out=null;
		DataInputStream in=null;
		try {
			serverForClient =new ServerSocket(2010);
//			端口号是服务器端与客户端链接的通路标志,设置服务器端口号
		}catch(IOException e) {
			//如果端口号已经被占用,将触发异常
			System.out.println(e);
		}

		try {
			System.out.println("等待客户呼叫");
			socketOnServer=serverForClient.accept();
//			堵塞状态——等待客户端访问,获得客户端地址
			System.out.println("客户的地址:"+socketOnServer.getInetAddress());
//			输出客户端的地址
			out=new DataOutputStream(socketOnServer.getOutputStream());
			in=new DataInputStream(socketOnServer.getInputStream());
			while(true) {
				int s1=in.readInt();
//				in读取信息,堵塞状态
				char u=in.readChar();
				int s2=in.readInt();
				System.out.println("服务器收到客户的提问:"+s1+u+s2);
				switch(u) {
					case '*':answer=s1*s2;break;
					case '/':answer=s1/s2;break;
					case '+':answer=s1+s2;break;
					case '-':answer=s1-s2;break;
					case '%':answer=s1%s2;break;
				}
				out.writeInt(answer);
			}
		}catch(Exception e) {
			System.out.println("客户已断开"+e);
		}
	}
}

 测试算式输入格式

import java.util.Scanner;

//测试输入方式————>输入10 + 10(数与运算符之间要有空隔间隔)
public class test {
	public static void main(String args[]) {
		Scanner s=new Scanner(System.in);
		int s1=s.nextInt();
		char ms=s.next().charAt(0);
		int s2=s.nextInt();

		System.out.println(s1+"\n"+ms+"\n"+s2);
	}
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值