📄 servers.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 + -