服务器

package factory;

import java.awt.Color;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


public class MsServer extends Thread{
	BufferedReader in;
	PrintWriter out;
	
	ServerSocket serverSocket;
	
	Socket newSocket;
	
	PersonBean bean = new PersonBean();
	
	ArrayList<Object> list = new ArrayList<Object>();//数据库获取的数据存放到该list中
	
	ResultSet result;//结果集
	
	ObjectInputStream is = null;
	ObjectOutputStream os =null;
	
	public MsServer(){
		
		try{
			serverSocket=new ServerSocket(7777);
			while(true){
				System.out.println("等待客户端...");
				newSocket=serverSocket.accept();
				System.out.println("连接成功");
				new Thread(new Runnable() {//实现多线程...死亡的线程再用start的话就IllegalThreadStateException
					
					@Override
					public void run() {
						// TODO Auto-generated method stub
						//startserver();
						//readliu();//先判断是否是谁发出的请求
						run1();
					}
				}).start();
			}
		}catch(Exception e){System.out.println(e); }
		System.out.println("》ChatClient被new");
		//new ChatClient();
		System.out.println("》》ChatClient被new");
	}
	
	public void run1(){
		String msg="";
		try{
			in = new BufferedReader(new InputStreamReader(newSocket.getInputStream()));
			out = new PrintWriter(newSocket.getOutputStream(),true);
		}catch(Exception e){
			
		}
		while(true){
			try{
				msg=in.readLine();
				System.out.println("run3");
			}catch(SocketException e){
				System.out.println(e);
				break;
			}catch(Exception e){
				System.out.println(e);
			}
			
			//判断是否是Node14Panel发的请求
			if(msg.equals("All")){
				System.out.println("All发出的请求");
				startserver();
			}
			else if(msg.equals("Add")){
				System.out.println("Add发出的请求");
				add();
			}
			else if(msg.equals("Check")){
				System.out.println("Check发出的请求");
				check();
			}
		}
		System.out.println(msg);
		
		
	}
	
	//判断是谁发送的请求,执行相对应的操作
	void readliu(){
		String msg = "";
		System.out.println("开始读取流");
		try{
			in = new BufferedReader(new InputStreamReader(newSocket.getInputStream()));
			out = new PrintWriter(newSocket.getOutputStream(),true);
			System.out.println("定义in变量完成");
			msg = in.readLine();
			System.out.println("开始读取流");
			//in.close();
			System.out.println("in流关闭");
		}catch(IOException e){
			System.out.println(e);
		}catch(Exception e){
			System.out.println(e);
		}
		
		//判断是否是Node14Panel发的请求
		if(msg.equals("All")){
			System.out.println("All发出的请求");
			startserver();
		}
		else if(msg.equals("Add")){
			System.out.println("Add发出的请求");
			add();
		}
		else if(msg.equals("Check")){
			System.out.println("Check发出的请求");
			check();
		}
	}
	
	//给客户端发送信息
	public void sendMsg(String msg){
		try{
			out.println(msg);
		}catch(Exception e){
			System.out.println(e);
		}
	}
	
	//读取对象流
	void startserver(){
		try{
			sendMsg("Obj");//给客户端发送信息,解释这是对象
			sendMsg("test");
			os = new ObjectOutputStream(newSocket.getOutputStream());
			//searchAll();//查询所有的数据
			
			System.out.println("成功给客户端发送Obj信息");
			for(int i=0;i<list.size();i++){
			   os.writeObject(list.get(i));
			}
			os.writeObject(null);//添加表示对象已输完
			os.flush();
			System.out.println("Obj传输完成");
		}catch(IOException e){
			System.out.println(e);
		}catch(Exception e){
			System.out.println(e);
		}
	}
	
   
	

   //把所有数据发到客户端
   public void sendAll(){
	   
	   try{
		   for(int i=0;i<list.size();i++){
			   os.writeObject(list.get(i));
		   }
	   }catch(Exception e){
		   System.out.println(e);
	   }
   }
   
  
   //查询所有的数据
   
   ///获取所有的数据存放到list中
   public void searchAll(){
	   
	    String sql = "";
		Database DB = new Database();//连接数据库
		sql = "SELECT SNO,SNAME,SEX,AGE,CNO,PNO,PNUM,BSALARY FROM staff";
		System.out.println("searchAll被调用");
		
		try{
			System.out.println("DB被调用");
			DB.Conn();
			System.out.println("DB完");
			result = DB.executeQuery(sql);//执行sql语句并返回结果
			System.out.println("result完");
			while(result.next()){
				Person person = new Person();//临时对象
				
				person.setPersonID(result.getString("SNO"));
				person.setName(result.getString("SNAME"));
				person.setSex(result.getString("SEX"));
				person.setAge(result.getInt("AGE"));
				person.setCno(result.getString("CNO"));
				person.setPno(result.getString("PNO"));
				person.setPnum(result.getInt("PNUM"));
				person.setSalary(result.getString("BSALARY"));
				
				System.out.println("SNO: "+person.getPersonID()+" SNO: "+person.getName()+
				           " SEX:"+person.getSex()+" AGE:"+person.getAge()+" CNO:"+person.getCno()+
				           " PNO:"+person.getPno()+" PNUM:"+person.getPnum()+" Salary:"+person.getSalary());
				
				list.add(person);//存放数据到list中
				os.writeObject(person);//写入序列化的对象
				os.flush();
			}
			
		}catch(Exception e){
			System.out.println(e);
		}
		finally{
			DB.closeStmt();//关闭声明
			DB.closeConn();//关闭链接对象
		}
		
	}

}


客户端:

package com.msclient;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

import factory.Person;


//用来发送请求给服务器端
public class PersonBean extends Thread{
	
	String sql;
	List<Object> list = new ArrayList<Object>();
	
	String field1;     //SNO
	String field2;     //SNAME
	String field3;     //SEX
	String field4;     //AGE
	String field5;     //CNO;
	String field6;     //PNO;
	int pnum = 0;      //PNUM
	String salary="0";     //BSALARY
	
	//读取数据
	ObjectInputStream is = null;
	ObjectOutputStream os =null;
	
	Socket socket;
	private BufferedReader reader;
	private PrintWriter writer;
	
	ArrayList<Object> listvalue = new ArrayList<Object>();//保存信息的list
	
	public PersonBean(){
		linkserver();//连接服务器
		start();//启动线程
	}
	
	public void linkserver(){
		//与服务端连接
		try{
			System.out.println("linkserver被调用");
			socket = new Socket("127.0.0.1", 7777);
			writer = new PrintWriter(socket.getOutputStream(),true);
			System.out.println("成功连接到服务器");
			//reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		}catch(Exception e){
			System.out.println(e);
		}
	}
	
	//线程,用来监听服务器发送过来的信息
	public void run(){
		String msg="";
		//BufferedReader reader;
		
		while(true){
			try{
				reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
				msg=reader.readLine();
				System.out.println("run3");
			}catch(SocketException e){
				System.out.println(e);
				break;
			}catch(Exception e){
				System.out.println(e);
			}
			System.out.println(">>" + msg );
			if(msg!=null&&msg!=""){
				System.out.println(">>" + msg );
			}
			if(msg.equals("Obj")){
				System.out.println(">>" + msg );
				
				
			}
		}
		System.out.println(msg);
	}

	
	
	//获取服务端的信息
	public ArrayList<Object> seek(){
		//获取服务器发来的信息
		System.out.println("seek()被调用");
		try{
			System.out.println("is出问题");
			is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));
			System.out.println("is没问题");
		while(true){
			try{
				Person person = (Person)is.readObject();
				if(person==null) break;
				listvalue.add(person);//获取的信息存放到listvalue集合中
			}catch(ClassNotFoundException e){
				System.out.println(e);
				break;
			}catch(Exception e){
				System.out.println(e);
				break;
			}
		}
		System.out.println("对象输完");
		}catch(Exception e){System.out.println(e);}
		for(int i=0;i<listvalue.size();i++){
        	Person person = (Person)listvalue.get(i);
        	System.out.println("SNO: "+person.getPersonID()+" SNO: "+person.getName()+
			           " SEX:"+person.getSex()+" AGE:"+person.getAge()+" CNO:"+person.getCno()+
			           " PNO:"+person.getPno()+" PNUM:"+person.getPnum()+" Salary:"+person.getSalary());
		}
		System.out.println("seek()查询完成");
		return listvalue;//返回集合
		
	}	
	
	public ArrayList<Object> seek1(){
		return listvalue;
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值