这个简单的例子将演示应用Java实现客户端与服务器端传输文件的方法。

服务器端源代码:


[java] view plaincopyprint?
import java.net.*;    
import java.io.*;    

public class FileServer {    
  public static void main (String [] args ) throwsIOException {    
    // create socket     
    ServerSocket servsock = new ServerSocket(13267);    
    while (true) {    
      System.out.println("Waiting...");    
      Socket sock = servsock.accept();    
      System.out.println("Accepted connection : " + sock);    
      // sendfile     
      File myFile = new File ("source.pdf");    
      byte [] mybytearray  = new byte [(int)myFile.length()];    
      FileInputStream fis = new FileInputStream(myFile);    
      BufferedInputStream bis = new BufferedInputStream(fis);    
      bis.read(mybytearray,0,mybytearray.length);    
      OutputStream os = sock.getOutputStream();    
      System.out.println("Sending...");    
      os.write(mybytearray,0,mybytearray.length);    
      os.flush();    
      sock.close();    
      }    
    }    
}   

 

 

 1 客户端源代码:
 2 
 3 
 4 [java] view plaincopyprint?
 5 import java.net.*;    
 6 import java.io.*;    
 7 
 8 public class FileClient{    
 9   public static void main (String [] args ) throws IOException {    
10     int filesize=6022386; // filesize temporary hardcoded     
11     long start = System.currentTimeMillis();    
12     int bytesRead;    
13     int current = 0;    
14     // localhost for testing     
15     Socket sock = new Socket("127.0.0.1",13267);    
16     System.out.println("Connecting...");    
17     
18     // receive file     
19     byte [] mybytearray  = new byte [filesize];    
20     InputStream is = sock.getInputStream();    
21     FileOutputStream fos = new FileOutputStream("source-copy.pdf");    
22     BufferedOutputStream bos = new BufferedOutputStream(fos);    
23     bytesRead = is.read(mybytearray,0,mybytearray.length);    
24     current = bytesRead;    
25     // thanks to A. Cádiz for the bug fix     
26     do {    
27        bytesRead =    
28           is.read(mybytearray, current, (mybytearray.length-current));    
29        if(bytesRead >= 0) current += bytesRead;    
30     } while(bytesRead > -1);    
31     
32     bos.write(mybytearray, 0 , current);    
33     bos.flush();    
34     long end = System.currentTimeMillis();    
35     System.out.println(end-start);    
36     bos.close();    
37     sock.close();    
38   }    
39 }   

 

 

posted on 2012-06-14 17:29  清沁  阅读(1861)  评论(0编辑  收藏  举报