A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nsunshine 中级黑马   /  2014-7-10 06:19  /  866 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
* 9、 使用TCP协议写一个可以上传文件的服务器和客户端。
* @author 李宁
*
*/
public class Test9
{  
          
    public static void main(String[] args)
    {}  
  
}  
//客户端  
class Client
{  
      public static void main(String[] args) throws Exception
      {  
      //建立Socket服务  
      Socket fileLoaderSocket = new Socket("168.168.168.94", 10005);  
      //从客户端本地读取文件,并写入socket的输出流中  
      OutputStream out = fileLoaderSocket.getOutputStream();  
      //实例化对象fileReader
      InputStream fileRead = new FileInputStream("G:\\Demo.mp3");  
      //建立数组
      byte[] buf = new byte[1024];  
      int len = 0;
      //判断是否读到文件末尾
      while((len=fileRead.read(buf)) != -1)
          {  
           out.write(buf, 0, len);  
          }  
      //告诉服务端,文件已传输完毕  
      fileLoaderSocket.shutdownOutput();  
      //获取从服务端反馈的信息  
      BufferedReader in = new BufferedReader(new InputStreamReader(fileLoaderSocket.getInputStream()));  
      String serverBack = in.readLine();  
      System.out.println(serverBack);   
      //资源关闭  
      fileLoaderSocket.close();  
      fileRead.close();  
    }  
}  

//服务端  
class Server
{  
     public static void main(String[] args) throws Exception
     {  
      //建立服务端Socket  
      ServerSocket ss = new ServerSocket(10005);  
      //接收客户端Socket  
      Socket fileLoaderSocket = ss.accept();  
        
      //打印连接信息  
      String ip = fileLoaderSocket.getInetAddress().getHostAddress();  
      System.out.println(ip + "...conncected");  
        
      //接收文件,并保存  
      InputStream in = fileLoaderSocket.getInputStream();  
      //实例化对象fileSave
      OutputStream fileSave = new FileOutputStream("E:\\server.mp3");  
      //建立数组buf
      byte[] buf = new byte[1024];  
      int len = 0;  
      //判断是否读到文件末尾
       while((len=in.read(buf)) != -1)
         {  
          fileSave.write(buf, 0, len);  
          //刷新
          fileSave.flush();  
         }  
      //返回文件复制情况信息  
      BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fileLoaderSocket.getOutputStream()));  
      out.write("文件上传成功");  
      //刷新
      out.flush();  
      //资源关闭  
      ss.close();  
      fileLoaderSocket.close();  
      fileSave.close();  
    }  
}  

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马