⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servers.java

📁 一个java开发的海运系统
💻 JAVA
字号:
package sun.com.service.impl;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.Border;

import sun.com.serve.*;
//一个服务器的建立

public class Servers extends JFrame implements ActionListener {
	  private TextField porttext;
	  private TextArea text;
	  Button send;
	  Button selectFile;
	  JTextField sendtext;
	  ServerSocket server;
	  private Socket skt;
	  Container con;
	  Button Start;//打开服务器按钮
	  JPanel jpan1;
	  File files=null;
	  
	  //接受文件时显示的窗口
	  public void reciveShow(BufferedReader br)throws IOException{
		  
		  JFileChooser je=new JFileChooser("d:/ss.txt");
		  int value=je.showSaveDialog(this);
		  je.setMultiSelectionEnabled(true);
		  new Recive(value,je,br).start();
		  
	  }
	  //接收文件的线程
class Recive extends Thread{
	      int value=-1;
	      JFileChooser je;
	      BufferedReader br;
	      
	  public Recive(int value,JFileChooser je,BufferedReader br){
		  this.value=value;
		  this.je=je;
		  this.br=br;
	  }
	  public void run(){
		    if(value==0){
			        File file=je.getSelectedFile();
			        try {
			        	
						file.createNewFile();
					} catch (IOException e1) {
						
						e1.printStackTrace();
					}
			        PrintWriter pw;
			        
				try {
					pw = new PrintWriter(file);
			       while(true){
			    	   String ss=br.readLine();
			    	   pw.println(ss);
			    	   if(ss==null)break;
			    	   System.out.println("接收==="+ss);
			       }
			       pw.flush();
			       pw.close();
			       text.append("接收完毕了!");
                   } catch (Exception e){
                	   e.printStackTrace();
				 }
			       
			 }
	  }
}
class  ReadText extends Thread implements IServiceImpl{
	  
	 //从网络读数据
	  public void run(){
                  
	  	      try{
//	  			   BufferedReader br = new BufferedReader(new InputStreamReader(skt.getInputStream()));
	  			     
	  				   for(;;){
//	  					   
//	  			          text.append("\n"+skt.getInetAddress().getHostName()+":"+br.readLine());
	  					   text.append("\n"+skt.getInetAddress().getHostName());
	  		        
	  			      }
	  		   }catch(Exception e){
	  			   e.printStackTrace();
	  		    text.append("\n对方断线了!");
	  	  }
	  }
}	 
    //创建一个新的线程
	public void work(){
//		new ReadText().start();//启动从网络中读取的线程
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(skt.getInputStream()));
			
			text.append("\n"+skt.getInetAddress().getHostName()+":"+br.readLine());
			reciveShow(br);
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	 }
	//服务器的界面
    public Servers(){
	    con=this.getContentPane();
		this.setBounds(100, 100, 400, 400);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		jpan1=new JPanel();
		JLabel port=new JLabel("端口号:");
		porttext=new TextField(5);
		Start=new Button("Start");
		con.add(jpan1,BorderLayout.NORTH);
		
		jpan1.setLayout(new BorderLayout());
		jpan1.add(port,BorderLayout.LINE_START);
		jpan1.add(porttext,BorderLayout.CENTER);
		jpan1.add(Start,BorderLayout.EAST);
		
		
		text=new TextArea();
		con.add(text,BorderLayout.CENTER);
		
		JPanel jpan3=new JPanel();
		con.add(jpan3,BorderLayout.SOUTH);
		jpan3.setLayout(new BorderLayout());
		send=new Button("SEND");
		selectFile=new Button("Select");
		sendtext=new JTextField();
    	jpan3.add(selectFile,BorderLayout.LINE_START);
		jpan3.add(sendtext,BorderLayout.CENTER);
		jpan3.add(send,BorderLayout.LINE_END);
		Start.addActionListener(this);
		send.addActionListener(this);
		selectFile.addActionListener(this);
	}
	public void actionPerformed(ActionEvent e) {
		JOptionPane j=new JOptionPane();
		//启动服务器
		if(e.getSource().equals(Start)){	
			try {
				ServerSocket server = new ServerSocket(Integer.parseInt(porttext.getText()));
				text.append("Loading Server....."+"\n");
				skt = server.accept();
				server.setSoTimeout(1000);//设置服务器超时的时间
				text.append("Connecting to:"+skt.getInetAddress().getHostName()+"\n");
				this.work();
				
			} catch (Exception  ee) {
	            j.showMessageDialog(null, "Error Port!","Error",JOptionPane.ERROR_MESSAGE);	//判断端口是否正确			
				return;
			} 
		}
		//数据的发送
		if(e.getSource().equals(send)){
			PrintWriter pw;
			try {
				pw = new PrintWriter(skt.getOutputStream());
				pw.println(sendtext.getText());
				pw.flush();
				text.append("\n"+"I say:"+sendtext.getText()+"\n");
			
			} catch (Exception e1) {
				j.showMessageDialog(null, "Data Send Error","Error",JOptionPane.ERROR_MESSAGE);
				return;
			}	
		}
		
		
		
		//文件的发送
		if(e.getSource().equals(selectFile)){
			        PrintWriter pw;
			        JFileChooser je=new JFileChooser("d:/");
			        je.setMultiSelectionEnabled(true);
//			        File file=je.getSelectedFile();	
			        int value=je.showOpenDialog(this);
			if(value==0){
				    files=je.getSelectedFile();
//				    je.setMultiSelectionEnabled(true);
				try {
					pw = new PrintWriter(skt.getOutputStream());
					
					BufferedReader b=new BufferedReader(new FileReader(files));
					char[] b1=new char[1024];
					while(true){
						int n=b.read(b1);
						if(n<-1)break;
						pw.write(b1, 0, n);
						pw.flush();
					}
					b.close();
					pw.close();
					
					
				} catch (Exception e1) {
					j.showMessageDialog(null, "File Send Error","Error",JOptionPane.ERROR_MESSAGE);
					return;
				}
				
	         }
		}
}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -