利用socket网络编程,实现的简易CS计算器

原创 2013年12月03日 15:44:20

包含socket服务端、客户端,实现简易计算器:

1、服务端:

package com.boco.calculatorBySocket.server;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import com.boco.calculatorBySocket.Calculation;
import com.boco.calculatorBySocket.CalculationPojo;

/**
 * 计算器服务端
 * @author Administrator
 *
 */
public class Server {
	
	public static ServerSocket serverSocket;
	
	public Server(){
		try {
			this.serverSocket = new ServerSocket(5678);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		try {
			Server server = new Server();
			while(true){
				Socket client=serverSocket.accept();
				System.out.println(serverSocket.getInetAddress() );
				InputStream is=client.getInputStream();
				ObjectInputStream ois=new ObjectInputStream(is);
				Object o = ois.readObject();
				CalculationPojo pojo = (CalculationPojo) o;
				if(pojo.getWay().equals("end"))
					break;
				int result = Calculation(pojo.getWay(),pojo.getValue1(),pojo.getValue2());
				System.out.println("result  =   "+result);
				OutputStream os=client.getOutputStream();
		        DataOutputStream dos=new DataOutputStream(os);
		        dos.writeInt(result);
		        dos.flush();
			}
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static int Calculation(String way , int a , int b ){
		Calculation cal = new Calculation();
		if("+".equals(way)){
			return cal.plus(a, b);
		}else if("-".equals(way)){
			return cal.minus(a, b);
		}else if("*".equals(way)){
			return cal.mul(a, b);
		}else if("/".equals(way)){
			return cal.Divide(a, b);
		}else{
			return 63353;
		}
	}


}


2、客户端:

package com.boco.calculatorBySocket.client;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.boco.calculatorBySocket.CalculationPojo;
/**
 * 计算器客户端
 * @author Administrator
 *
 */
public class Client extends JFrame implements  ActionListener{
	
	
	
	JPanel JPanel_center=new JPanel();
	JPanel JPanel_south=new JPanel();
	
	//JLabel JLabel_add=new JLabel("+");
	String s[]={"+","-","*","/","%"};
	JComboBox ways=new JComboBox(s);
	JLabel JLabel_equal=new JLabel("=");
	JTextField JTextField_num1=new JTextField(10);
	JTextField JTextField_num2=new JTextField(10);
	JTextField JTextField_result=new JTextField(10);
	JButton JButton_cal=new JButton("计算");


	
	public Client(){
		this.getContentPane().add(JPanel_center,BorderLayout.CENTER);
		this.getContentPane().add(JPanel_south,BorderLayout.SOUTH);
		JPanel_center.add(JTextField_num1);
        JPanel_center.add(ways);
        JPanel_center.add(JTextField_num2);
        JPanel_center.add(JLabel_equal);
        JPanel_center.add(JTextField_result);
        JPanel_south.add(JButton_cal);
        JButton_cal.addActionListener(this);
        ways.addActionListener(this);
	}

	public void actionPerformed(ActionEvent e) {
		try {
			
			String value1=JTextField_num1.getText();
			String value2=JTextField_num2.getText();
			if(value2.equals("") && value1.equals("")){
				return;
			}
			Socket server =  new Socket(InetAddress.getLocalHost(),5678);
			String way=(String)ways.getSelectedItem();
			OutputStream os = server.getOutputStream();
			ObjectOutputStream out = new ObjectOutputStream(os);
			int item1 = Integer.parseInt(value1);   
			int item2 = Integer.parseInt(value2);
			CalculationPojo pojo = new CalculationPojo(way,item1,item2);
			
			out.writeObject(pojo);
			out.flush();
			InputStream is =server.getInputStream();
			DataInputStream dis = new DataInputStream(is);
			int result= dis.readInt();
			JTextField_result.setText(String.valueOf(result));
			
			os.close();
			out.close();
			is.close();
			dis.close();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
	}
	public static void main (String[] args) {
		Client cc=new Client();
	   	cc.pack();
	   	cc.setVisible(true);
	}
}


3、计算器:

package com.boco.calculatorBySocket;

public class Calculation {
	
	
	
	/**
	 * 加
	 * @param a
	 * @param b
	 * @return
	 */
	public int plus (int a,int b){
		return a+b;
	}
	
	/**
	 * 减
	 * @param a
	 * @param b
	 * @return
	 */
	public int minus (int a,int b){
		return a-b;
	}
	
	/**
	 * 乘
	 * @param a
	 * @param b
	 * @return
	 */
	public int mul (int a,int b){
		return a*b;
	}

	/**
	 * 除
	 * @param a
	 * @param b
	 * @return
	 */
	public int Divide (int a,int b){
		return a/b;
	}
}


4:实体:

package com.boco.calculatorBySocket;

import java.io.Serializable;

public class CalculationPojo implements Serializable{
	
	public String way;
	
	public int value1;
	
	public int value2;
	
	public CalculationPojo(String way, int value1 , int value2){
		this.way = way;
		this.value1 = value1;
		this.value2 = value2;
	}

	public String getWay() {
		return way;
	}

	public void setWay(String way) {
		this.way = way;
	}

	public int getValue1() {
		return value1;
	}

	public void setValue1(int value1) {
		this.value1 = value1;
	}

	public int getValue2() {
		return value2;
	}

	public void setValue2(int value2) {
		this.value2 = value2;
	}

}


 

相关文章推荐

简单的计算器服务器端/客户端程序

//应用层协议 //客户端连接到服务器端后以1字节整数形式穿肚运算数个数 //客户端向服务器端传递的每个待算整数占4字节 //传递待算数后传递运算符,运算符占1字节 //选择字符+、-、*之一传递 ...

java-socket多线程网络编程案列--搭建本地简易聊天对话服务器

该实验至少需要两台pc机,一台作为服务器,一台作为客户端。客户端通过8080向服务器端发送消息,服务器端通过8008端口接受消息;同时,服务器端将接收的消息通过9090端口发送给每一台客户端,客户端也...

socket简易网络编程

  • 2014年10月01日 12:45
  • 48.18MB
  • 下载

JAVA SOCKET网络编程,服务端接收多个客户端连接的实现

这是基于前面一篇文章的一个简单扩展,当然这不是最好的实现 服务端如果要想接收多个客户端连接,必须...

java网络编程,通过TCP,Socket实现多对一的局域网聊天室 .

java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端   这是服务器端的代码 View C...

Java网络编程,通过TCP,Socket实现多对一的局域网聊天室

java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端...

java网络编程,通过TCP,Socket实现多对一的局域网聊天室

    java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端   这是服务器端的代码 V...

c# 网络编程中的Socket多线程利用

  • 2010年03月15日 12:40
  • 33KB
  • 下载

Linux下Socket网络编程,文件传输,数据传输的C语言例子

原文地址:: http://hi.baidu.com/04105209/blog/item/85f2c187e48d9427c65cc389.html/cmtid/1e8a7cd665e3ba210...

网络编程(15)—— 实现利用管道保存客户端数据的socket服务端

#include #include #include #include #include #include #include #include #define BUF_SIZE 30 void e...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用socket网络编程,实现的简易CS计算器
举报原因:
原因补充:

(最多只允许输入30个字)