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

package 黑马面试编程;
//=================================客户端========================
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class Client {
        // 、使用TCP协议写一个可以上传文件的服务器和客户端。
        // 两个类 客户端类,,,服务器类,,用字节输流控制,所有的东西都可以传了,
        public static void main(String[] args) throws IOException {
                Socket socket = new Socket(InetAddress.getLocalHost(), 8888); // 需要指定ip和端口
                // 向服务器的输出流
                OutputStream os = socket.getOutputStream();
                // 从电脑需要上传的文件的输入流
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
                                "gjp.jpg"));
                // 边度边写
                int len = 0;
                byte[] b = new byte[1024 * 8];
                while ((len = bis.read(b)) != -1) {
                        os.write(b, 0, len);
                }
                bis.close();
                // 暂时关闭输出流,不然不知道什么时候输入完成 了
                socket.shutdownOutput();
                InputStream is = socket.getInputStream();
                // 边度边写
                int len1 = 0;
                byte[] b2 = new byte[1024 * 8];
                len1 = is.read(b2);
                String string = new String(b2, 0, len1);
                // 获取数据后将数据读出到控制台
                System.out.println(string);

                is.close();
                os.close();
                socket.close();

        }

}


//================服务器端================================

package 黑马面试编程;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
        public static void main(String[] args) throws IOException {
//                服务器
                final ServerSocket ss = new ServerSocket(8888);
//                循环接收,,因为服务器不会停
//                解决并发问题----匿名内部类  开   线程
                new Thread(){
                        public void run() {
                               
                               
                                while(true){
                                       
                                        try {
                                                Socket accept = ss.accept();
                                               
                                                InputStream is = accept.getInputStream();
//                向服务器硬盘输出的输出流,。还是字节流
                                                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(System.currentTimeMillis()+"aaa.jpg"));
//                边度边写
                                                int len=0;
                                                byte[] b=new byte[1024*8];
                                                while((len=is.read(b))!=-1){
                                                        bos.write(b, 0, len);
                                                }
                                               
//                输出一句话
//                关闭向服务器硬盘输出的输出流bos
                                                bos.close();
//                ----------------------------------------->转战客户端
//                向客户端输出一句话
//                建立输出流
                                                OutputStream os = accept.getOutputStream();
                                                PrintStream ps = new PrintStream(os);
                                                ps.print("上传成功");
                                               
                                                ps.close();
                                        } catch (FileNotFoundException e) {
                                                //
                                                throw new RuntimeException("找不到文件");
                                               
                                        } catch (IOException e) {
                                               
                                        throw new RuntimeException("输入输出流出错");
                                        }
                                }
                        };
                       
                }.start();
               
//                os.close();
//                accept.close();
//                ss.close();
//               
               
       
        }

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