服务器端:
package com.it.demo5;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;
/**
* 服务器端程序
*/
public class Server4 {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(8888);
System.out.println("文件服务器172.171.2.68启动啦,监听的端口是:8888");
while (true) {
Socket socket = serverSocket.accept();
//让子线程处理请求
T t = new T(socket);
t.start();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
class T extends Thread {
Socket socket;
public T(Socket socket) {
this.socket = socket;
}
/**
* 处理客户端的请求
*/
@Override
public void run() {
try {
//写出给客户端输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
String ip = socket.getInetAddress().getHostAddress();
int nextInt = new Random().nextInt(9999999);
String fileName=nextInt+".jpg";
System.out.println(ip+"客户端访问服务器,上传了一个文件:" + fileName);
File file = new File("G:/2023/" + fileName);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
byte[] bytes = new byte[1024];
int len = inputStream.read(bytes);
while (len != -1) {
bos.write(bytes, 0, len);
len = inputStream.read(bytes);
}
bos.close();
socket.shutdownInput();
} catch (IOException e) {
System.out.println("服务器异常:"+e.getMessage());
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
客户端:
package com.it.demo1;
import java.io.*;
import java.net.Socket;
public class Client4 {
public static void main(String[] args) throws Exception{
Socket socket = new Socket("172.171.2.68", 8888);
BufferedInputStream bos = new BufferedInputStream(new FileInputStream("D:/2022/1.jpeg"));
OutputStream outputStream = socket.getOutputStream();
byte[] buffer = new byte[1024];
int len = bos.read(buffer);
while (len != -1) {
outputStream.write(buffer, 0, len);
len = bos.read(buffer);
}
outputStream.close();
bos.close();
socket.close();
System.out.println("文件上传完毕!");
}
}
通过网络编程实现一个简单的文件上传案例。