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

📄 send.java

📁 可以支持很多人在线聊天
💻 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 + -