Java 基于TCP的socket实现文件传输
- 基于TCP的socket结合java的io流 实现客户端与服务器之间的文件传输
Socket
套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合
设计思路
1、建立连接
两个接口一个模仿服务器,一个模仿客户端 服务器创建服务端口,
客户端根据端口号和ip创建两者间的连接
2、发送文件
客户端将文件以输入流的方式传给服务器
服务器利用socket.getInputStream()方法获取到客户端传进来的输入流,并将其接收存放
3、接收反馈信息
服务器接收成功后利用输出流向客户端发出反馈
客户端接收导服务器的输出信息并打印下来
代码实现
实现流程
服务器
1、启动服务器
服务器创建端口
服务器监听端口,等待访问数据。。。。。
3、服务器接收客户端发送过来的文件
服务器将反馈消息发往客户端
客户端
2、启动客户端
客户端与服务器建立连接
客户端将文件以流的格式发送到服务器上
客户端等待服务器反馈。。。。。
4、客户端接收服务器发送过来的反馈消息
1、客户端
public static void main(String[] args) throws IOException {
Socket client = new Socket("192.168.3.76", 1617);
OutputStream out = client.getOutputStream();
FileInputStream in =
new FileInputStream(new File("D:打印020.txt"));
byte[] buff = new byte[1024];
int len;
while ((len = in.read(buff)) != -1) {
out.write(buff, 0, len);
}
client.shutdownOutput();
InputStream sin = client.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(sin));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
out.close();
in.close();
client.close();
sin.close();
reader.close();
}
2、服务器
public static void main(String[] args) {
try (
ServerSocket server = new ServerSocket(1617);
Socket socket = server.accept();
InputStream in = socket.getInputStream();
OutputStream out = new FileOutputStream(new File("D:打印0211.txt"))
) {
byte[] buff = new byte[1024];
int len;
while ((len = in.read(buff)) != -1) {
out.write(buff, 0, len);
}
try (BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8))
{
writer.write("你好,我已成功收到图片!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)