码迷,mamicode.com
首页 > 其他好文 > 详细

6.面向对象程序设计

时间:2015-06-14 22:34:18      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

  • 1.程序描述

      本程序的使用者为局域网用户。程序实现的主要功能是局域网的常见格式的文件的传 

输。其用例图如图1。本程序可通过可视化操作界面实现一对多的文件传输。

      技术分享

 

  • 2.协议实现过程

     TCP协议工作流程:

技术分享

      UDP协议工作流程:

技术分享

  • 3.聊天功能的流程设计

      采用DUP协议设计即时聊天功能在即时聊天功能中设计了一个发送端和一个接收端发送端和接收端处于同一个平台中为了使通信双方能够造一次连接中进行多次通信在接收端采用了多线程实现多次通信。在通信建立的时候通信的发起方首先填写通信的ip地址和port端口然后发送消息给接收者。接受者需要在同样的端口上等待发起者的信息。

 

    发送端:                                           

技术分享

    接收端:

技术分享

  • 4.文件传输功能实现流程

     使用TCP协议实现文件传输功能在文件传输开始时由发送方给接收方发送一个消息消息内容为待发送文件的文件名和长度。接收端收到后判断是不是传送的文件如果是传送的文件接收方择是否接收文件。然后开始传输文件文件传输完成后自动关闭服务器端和客户端。

     发送端:                                                

技术分享 

    接收端:

 技术分享

  • 5.主要设计

程序开始运行时,首先判断连接Ip,无误后连接(by 陈小斌)

 1 try
 2                     {
 3                         String ip = jTextField.getText();
 4                         if( ip.equals("") )
 5                         {
 6                             JOptionPane.showMessageDialog( jPanelRight,"请先输入对方IP",
 7                                            "IP为空",JOptionPane.ERROR_MESSAGE);    
 8                         }
 9                         else
10                         {    
11                             
12                             status.setText( "<html>连接中.......");                            
13                             talkingSocket = new Socket(jTextField.getText() , 9999);
14                             output = new PrintWriter( talkingSocket.getOutputStream(), true );
15                             output.println("[TALK]");
16                             status.setText( "<html>连接成功,可以进行<p>交谈了");            
17                             input = new BufferedReader( new InputStreamReader
18                                               ( talkingSocket.getInputStream() ) );
19                             IP = jTextField.getText();    
20                             message.setEnabled( true );
21                             connect.setEnabled( true );
22                             
23                         }
24                     }

 文件接收请求处理过程()

 1 if( e.getSource() == accept )//接受文件的请求
 2         {
 3             JFileChooser fileChooser = new JFileChooser();
 4              fileChooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
 5          
 6              int result = fileChooser.showSaveDialog( this );
 7          
 8              if( result == JFileChooser.CANCEL_OPTION )
 9                  return;
10          
11              File filePath = fileChooser.getSelectedFile();
12          
13              if( filePath == null||filePath.getName().equals("") )
14              {
15                  JOptionPane.showMessageDialog( this, "Invalid File Name",
16                            "Invalid File Name", JOptionPane.ERROR_MESSAGE);
17              }
18              else
19              {
20                  File  file = new File( filePath, lt.fileName );
21                  ReceiverThread receiver = new ReceiverThread( lt.fileReceiver, file, 
22                      listenerStatus,this.fileAcceptRate,this.jProgressBarAccept,lt.lengthOfFile );
23                  receiver.start();
24                      
25                  accept.setEnabled( false );
26                  refuse.setEnabled( false );    
27              }
28         }

 接收确认后的处理过程(by 王浩)

 1 try
 2              {
 3                  Socket s = new Socket( IP, 9999);
 4                  PrintWriter out = new PrintWriter(s.getOutputStream(),true); 
 5                  BufferedReader in = new BufferedReader(
 6                                     new InputStreamReader( s.getInputStream() ) );
 7                  
 8                  out.println( "[FILE]"+file.getName() );
 9                  out.println( file.length() );
10                  fileStatus.setText("<html>request to send file ‘"+file.getName()
11                                         +"‘("+ fileLength( file.length() )+") to "+IP);
12                  
13                  String answer = in.readLine();
14                  
15                  if ( answer.equals("OK") )
16                  {
17                      fileStatus.setText("["+IP+"]"+" OK");
18                      
19                      BufferedInputStream localFile = new BufferedInputStream
20                                   (new FileInputStream( file ));
21                        BufferedOutputStream sendFile = 
22                                 new BufferedOutputStream( s.getOutputStream());
23                                 
24                             
25                        fileStatus.setText("<html>begin to send <p>"+file.getName()+"<p>( "+ 
26                                      fileLength(file.length() ) +" )");
27                        
28                        long fl = file.length();
29                        long cur=0;
30                    
31                        byte[] buffer = new byte[1024 * 128];
32                     int b;
33                     
34                     jProgressBar.setVisible( true );
35                     
36                     long initialTime = new Date().getTime();
37                     long preTime = initialTime;
38                     long curTime = initialTime;
39                     long interspaceAmount=0;
40                        
41                        while ( (b = localFile.read(buffer)) != -1) {
42                           sendFile.write(buffer, 0, b);
43                           cur+=b;
44                           interspaceAmount+=b;
45                           jProgressBar.setValue( (int)( (cur*1.0/fl)*100 )  );
46                       
47                           curTime = new Date().getTime();
48                           if( (curTime-preTime)>500 )
49                           {
50                           fileSendRate.setText(  
51                                         fileLength( interspaceAmount*1000/(curTime-preTime) ) +"/秒");
52                           preTime = curTime;
53                           interspaceAmount = 0;
54                           }
55                       }
56                       
57                     fileSendRate.setText( "用时"+(int)( (curTime-initialTime)*1.0/1000+0.5 )+"秒" );
58                             
59                        fileStatus.setText( "<html>Have successfully<p>send the file <p>"
60                                                                          +file.getName()+"<p>to "+IP);
61                        jProgressBar.setVisible( false );
62                  }
63                  else
64                  {    
65                      fileStatus.setText("<html>["+IP+"]"+"<p>refuse to accept the file<p>"
66                                                       +file.getName());
67                  }

更多详细代码请到我们团队的GitHub地址http://github.com/bbker/FileTrans中下载查看, 此次团队项目设计程序代码部分由王浩、陈小斌编写;李增佐和郑丁鹏将在接下来负责程序的测试和bug工作。 

 

6.面向对象程序设计

标签:

原文地址:http://www.cnblogs.com/bbker/p/4575740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!