实现客户端发送文件给服务器端,服务端将文件保存在本地
程序员文章站
2022-07-01 08:02:00
...
package com.it.internet;
import org.junit.Test;
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
/*实现客户端发送文件给服务器端,服务端将文件保存在本地*/
public class TCPtest1 {
@Test
public void client(){
Socket socket = null;
FileInputStream fis = null;
OutputStream os = null;
try {
//创建客户端socket
socket = new Socket(InetAddress.getByName("127.0.0.1"), 8787);
//创建输入流
fis = new FileInputStream(new File("风景如画.jpg"));
//创建socket的输出流.将客户端的数据输出出去
os = socket.getOutputStream();
byte[] buffer =new byte[20];
int len;
//读取文件/输出数据操作
while ((len=fis.read(buffer))!=-1){
os.write(buffer,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//流关闭
if (os!=null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis!=null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket!=null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void server(){
//创建服务端serverSocket
ServerSocket ss = null;
Socket socket = null;
InputStream is = null;
FileOutputStream fos = null;
try {
ss = new ServerSocket(8787);
//接收来自于客户端的socket
socket = ss.accept();
//主要通过拿到客户端的socket 获取一个读入流
is = socket.getInputStream();
//创建一个输出流, 将文件保存在本地,指定一个路径
fos = new FileOutputStream(new File("风景如画3.jpg"));
byte[] buffer =new byte[20];
int len;
//读取及写出的操作
while ((len=is.read(buffer))!=-1){
fos.write(buffer,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//流关闭
if (fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket!=null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (ss!=null){
try {
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
上一篇: vue-router懒加载的3种方式汇总