ServerSocket server = new ServerSocket(8888); //让服务器一直处于监听状态(死循环accept方法) //有一个客户端上传文件,让服务器保存一个文件 while (true) { Socket socket = server.accept(); //使用多线程技术,提高程序效率 //有一个客户端上传文件就开启一个线程,完成文件的上传 new Thread(new Runnable() { //开启线程完成上传 @Override publicvoidrun(){ try{ InputStream is = socket.getInputStream(); File file = new File("D:\\upload"); if (!file.exists()) { file.mkdirs(); } //文件名称优化 //自定义一个文件的命名规则:防止同名的文件被覆盖 //规则:域名+毫秒值+随机数 String fileName = "域名" + System.currentTimeMillis() + new Random().nextInt(9999) + ".txt"; FileOutputStream fos = new FileOutputStream(file + "\\" + fileName); int len = 0; byte[] bytes = newbyte[1024]; while ((len = is.read(bytes)) != -1) { fos.write(bytes, 0, len); } socket.getOutputStream().write("上传成功".getBytes()); fos.close(); socket.close(); } catch (IOException e){ System.out.println(e); } } }).start(); } //server.close(); //服务器不需要关闭
模拟B\S服务器
客户端不再是Java程序,而是一个web页面
服务器端
1 2 3 4 5 6 7 8 9 10
//创建一个服务器 ServerSocket server = new ServerSocket(8080); //获取到请求的浏览器 Socket socket = server.accept(); InputStream is = socket.getInputStream(); byte[] bytes = newbyte[1024]; int len = 0; while ((len = is.read(bytes))!=-1){ System.out.println(new String(bytes,0,len)); }