这段代码是一个Java客户端程序,用于将本地文件发送给服务器。
首先,程序创建一个Socket对象,指定服务器的IP地址和端口号。然后,使用BufferedInputStream来读取本地文件,使用BufferedOutputStream将文件内容写入Socket的输出流,实现向服务器发送文件的功能。
程序通过循环读取文件的内容,将读取到的字节数据写入输出流,直到文件读取完毕。在写入数据之后,通过调用`flush()`方法刷新输出流,确保数据被及时发送。
最后,关闭输入流、输出流和Socket连接。
注意:代码中的文件路径是使用绝对路径,需要根据实际情况进行修改。另外,需要保证服务器程序处于监听状态,且能够接收客户端发送的文件。
public class Client2 {
//将文件发给服务端
public static void main(String[] args) {
Socket socket = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
socket = new Socket("127.0.0.1", 9999);
//将本地文件读入进来
bis = new BufferedInputStream(new FileInputStream("F:\\io流读写测试\\2023\\1.jpeg"));
bos = new BufferedOutputStream(socket.getOutputStream());//将读入的文件上传至服务端中
byte[] bytes = new byte[1024];
int read = bis.read(bytes);
while (read != -1) {//按照多少字节传输
bos.write(bytes, 0, read);
bos.flush();
read = bis.read(bytes);
}
//socket.shutdownOutput();//完成之后告知服务端已上传完毕~
System.out.println("上传成功~");
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
try {
bos.close();
bis.close();
socket.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}