📄 send.java
字号:
package talk3;import java.io.FileInputStream;import java.net.ServerSocket;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.WindowEvent;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;import java.net.SocketException;import java.awt.Event.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.util.Date;/** * @author hhocean * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */public class Send extends JFrame implements Runnable, ActionListener{ int M=1048576; long length; String filePath; Socket client; PrintStream out = null; BufferedReader in = null; JProgressBar bar= new JProgressBar(0,100); JSlider jSlider1 = new JSlider(); JPanel labelP=new JPanel(); JLabel label1=new JLabel(); JLabel label2=new JLabel(); JPanel buttonP = new JPanel(); JButton accept; int BUFFER = 1024; byte[] data = new byte[BUFFER]; String message; boolean flag=true; boolean just=true; public void run() { while(just) { try { message=in.readLine(); if(message.equals("yes")) { FileInputStream fi = new FileInputStream(filePath); int c; Date time=new Date(); int number=0; int currentSize=0; long t1 = time.getSeconds(); while ( (c = fi.read(data, 0, BUFFER)) != -1) { currentSize+=c; //System.out.println(c); out.write(data); int baiFen=(int)((currentSize)/(length/100.0)); bar.setValue(baiFen); if(flag) { label1.setText("已传: "+length/1024*baiFen/100+"/"+length/1024); } else label1.setText("已传: "+length/M*baiFen/100+"M/"+length/M+"M"); Date time2=new Date(); long t2=time2.getSeconds(); if(t2-t1>=1) { long v = (t2 - t1); // System.out.println(t1 + "oooooooooooooooooooooooooooooooo " + t2); label2.setText( "传送速度: " +(currentSize-number)/v/1024 + " K//S" ); t1 = t2; number=currentSize; } // System.out.println("jfkajflkajlkf== "+currentSize); //System.out.println("百分比:::: "+(int)(currentSize*100)); try { Thread.sleep( (long) 1); } catch (InterruptedException ex2) { } } bar.setValue(100); label1.setText(""); label2.setText(""); out.close(); fi.close(); } if(message.equals("doing")) { } } catch(SocketException se) { break; } catch(IOException ie) { ie.printStackTrace(); } } } public Send(int port) throws IOException { ServerSocket serverSocket = new ServerSocket(port); client=serverSocket.accept(); out = new PrintStream(client.getOutputStream()); in = new BufferedReader(new InputStreamReader( client.getInputStream())); //FileDialog file=new FileDialog(this,"选择传送文件",0); JFileChooser file = new JFileChooser(); file.setFileSelectionMode(JFileChooser.FILES_ONLY); file.showOpenDialog(this); filePath=file.getSelectedFile().getPath(); // filePath=file.getParent()+file.getName(); System.out.println("风口警方卡交费"+filePath); out.println(filePath); length=file.getSelectedFile().length(); out.println(length); if(length==0) { JOptionPane.showMessageDialog(null,"错误!"+"\n"+"文件为空") ; System.exit(0); } if(length/M>=1) { flag=false; } createTalkWin(); } public void createTalkWin() { this.setSize(300,400); Container pane = getContentPane(); pane.setLayout(new BorderLayout()); bar.setStringPainted(true); pane.add(jSlider1,BorderLayout.NORTH); pane.add(labelP,BorderLayout.CENTER); labelP.setLayout(new GridLayout(3,3)); labelP.add(bar); labelP.add(label1); labelP.add(label2); pane.add(buttonP,BorderLayout.SOUTH); buttonP.setLayout(new FlowLayout()); accept=new JButton("取消"); accept.addActionListener(this); buttonP.add(accept); jSlider1.setToolTipText(""); jSlider1.addMouseListener(new Send_jSlider1_mouseAdapter(this)); } public void actionPerformed(ActionEvent e) { System.exit(0); } /* public static void main(String[] args) { try { Send c = new Send(4700); c.show(); Thread t=new Thread(c); t.start(); } catch(Exception e) {} }*/ private class WindowDestroyer extends WindowAdapter { public void windowClosing(WindowEvent e) { //in.close(); out.close(); System.exit(0); } } void jSlider1_mouseReleased(MouseEvent e) { int v=jSlider1.getValue(); double s=200.000; double m=10; double g; if(v<50) { g=v/s; } else g=v/m; BUFFER=(int)(BUFFER*g); data=new byte[BUFFER]; }class Send_jSlider1_mouseAdapter extends java.awt.event.MouseAdapter{ Send adaptee; Send_jSlider1_mouseAdapter(Send adaptee) { this.adaptee = adaptee; } public void mouseReleased(MouseEvent e) { adaptee.jSlider1_mouseReleased(e); }}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -