题目要求:建立客户端和服务端的连接,客户端程序能够发送参与运算的两个数和运算符并接收显示服务器端的计算结果,服务器端接收客户端发送的消息(两个数和一个运算符号),并把计算结果发回给客户端。至少能完成“加、减、乘、除、开平方、求对数、正弦函数”等功能。
实现工具:java
简单图示:
详细代码:
客户端:
package week18;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.OutputStream;
import java.io.InputStream;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class Client extends JFrame implements Runnable,ActionListener {
Socket client=null;
DataInputStream datain=null;
InputStream in=null;
DataOutputStream dataout=null;
OutputStream out=null;
JTextField show=new JTextField();//创建输入框textField
JLabel tt = new JLabel();//文本
JButton bt = new JButton("发送");
String tempText="";//用于临时存放表达式字符串
String result;//用于存放运算结果
int symbol=1;
public Client(){//计算面板的无参构造函数
super("客户端");//调用父类方法
this.setBounds(300,400,500, 430);//设置窗体大小及出现在屏幕的位置
//文字面板
JPanel bp=new JPanel();//设置输入文字显示面板
tt.setText("输入表达式");//设置文字
tt.setFocusable(false);//设置输入框为不可编辑状态
bp.add(tt);//将输入框添加至输入框面板
this.add(bp, BorderLayout.NORTH);//设置输入按钮面板的方位:上
//输入框面板
JPanel ibp=new JPanel();//创建输入框面板input box panel
show.setText("");//设置输入框初始数字"0"
show.setEditable(true);//设置输入框为可编辑状态
show.setColumns(21);//设置输入框列数
show.setHorizontalAlignment(SwingConstants.RIGHT);//设置输入框的方位:
ibp.add(show);//将输入框添加至输入框面板
this.add(ibp, BorderLayout.CENTER);//设置输入框面板的方位:置中