客户端
package server1;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
// 1,获取本地字节输入流读取上传的文件
FileInputStream file = new FileInputStream("C:\\Users\\Administrator\\Desktop\\cli\\322792.jpg");
// 2.创建套接字对象
Socket socket = new Socket("127.0.0.1",8881);
// 3.使用套接字对象获取网络输出流
OutputStream outputStream = socket.getOutputStream();
// 4. 使用网络输出流输出数据
int len = 0;
byte[] by = new byte[1024];
while ((len = file.read(by)) != -1){
outputStream.write(by,0,len);
}
socket.shutdownOutput();
// 5.使用套接字对象获取网络输入流读取服务器返回的数据
InputStream inputStream = socket.getInputStream();
// 6.使用网络输入流读取服务器返回的数据
while((len = inputStream.read(by)) != -1){
System.out.println(new String(by,0, len));
}
file.close();
socket.close();
}
}
服务器端
package server1;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;
public class ServerTest {
public static void main(String[] args) throws IOException {
// 1.服务器端监听端口生成ServerSocket对象
ServerSocket serverSocket = new ServerSocket(8881);
// 2. 服务器端程序一直运行
while (true){
Socket accept = serverSocket.accept();
// 3.开启多线程提高效率
new Thread(){
@Override
public void run() {
// try 处理run异常
try{
// 4. 使用ServerSocket对象获取网络字节输入流
InputStream inputStream = accept.getInputStream();
// 5. 设置存放文件的File对象
File f = new File("C:\\Users\\Administrator\\Desktop\\server");
if (!f.exists()){
f.mkdirs();
}
// 6. 生成文件名每次保存后文件名不重复
File fl = new File("Lm"+ System.currentTimeMillis()+ new Random().nextInt(99999) + ".jpg" );
// 7.创建服务器本地输出流
FileOutputStream fileOutputStream = new FileOutputStream(f + "\\" + fl);
// 8.网络输入流读取数据
int len = 0;
byte[] by = new byte[1024];
while ((len = inputStream.read(by)) != -1){
// 9.本地输出流保存数据
fileOutputStream.write(by,0,len);
}
// 10.获取服务器输出流
OutputStream outputStream = accept.getOutputStream();
// 11. 服务器输出流写出数据
outputStream.write("上传成功".getBytes());
// 12.关闭服务
fileOutputStream.close();
outputStream.close();
accept.close();
}catch (IOException e){
System.out.println(e);
}
}
}.start();
}
// 服务器一直运行不需要关闭
//serverSocket.close();
}
}