Java网络编程实现资源下载详解【王道Java】

网友投稿 738 2022-05-28

一,前言

有一个作业需求,如下:

实现用户端输入需要下载的编号【存储在数据库里】,通过TCP连接,发出请求,客户端响应,传输目标文件个用户端。用户端,保存传输过来的文件。

二,实现资源下载

功能需求:

1-在服务器的硬盘创建一个目录,目录中存放供客户端下载的资源文件。

2-创建数据库表,表中存放资源文件的编号和资源文件的地址。

我的数据库截图,和服务端目标路径如下图。

三,资源下载的客户端

功能需求:

1-客户端输入要下载的资源编号

2-将编号发送给服务器

3-接收服务器的资源,保存到文件

服务器的ip,本机:

InetAddress ip=InetAddress.getLocalHost(); Socket client=new Socket(ip, port);

向服务器发送资源编号,编号—键盘输入。

String no;//编号 String name;

上述代码解释:

no变量为编号,name变量为下载资源另存为的名称。

输入下载资源的编号和输入下载资源另存为的名称:

System.out.println("输入下载资源的编号:"); no=scanner.next(); System.out.println("输入下载资源另存为的名称:"); name=scanner.next();

no编号发送给服务器

下载服务器发送来的资源: ```java OutputStream out=client.getOutputStream(); out.write(no.getBytes()); System.out.println("下载服务器发送来的资源"); InputStream in=client.getInputStream();

字节数组---->保存到文件。

保存文件的路径名。

File file=new File("E:/tcpcont/client/"+name+".jpg");

使用io流。保存文件。下载完成

FileOutputStream fos=new FileOutputStream(file); byte[]buf=new byte[1024*10]; int len; while((len=in.read(buf))!=-1){ fos.write(buf,0,len); } fos.close(); client.close(); System.out.println("下载完成");

四,资源下载的服务器端

功能需求:

1-接收客户端的编号

2-在资源表中查找对应资源的地址

3-将资源发送给客户端

声明自己的端口

int port=10010;

服务器的ip,本机

InetAddress ip=InetAddress.getLocalHost(); ServerSocket server=new ServerSocket(port);

接收客户端

阻塞式的方法,没有客户端接入,就会一直等待。

Socket client=server.accept();

接收一个资源编号。编号:

InputStream in=client.getInputStream();

将流中的数据读入到buf数组

连接数据库,执行sql语句:

查询resource数据库里,uid为目标值。

Connection conn=JDBCUtils.getConnection(); String sql="SELECT * FROM resource WHERE uid=?"; PreparedStatement pStatement=conn.prepareStatement(sql); pStatement.setString(1,no); ResultSet rs=pStatement.executeQuery();

获取返回指针。

使用while函数遍历指针。

while(rs.next()) {

获取到对应值。

int id = rs.getInt("uid"); String url = rs.getString("url");

将读入的数据写入到输出流,通知客户端,传输结束了。

实验总结:理解tcp的三次握手与连接的建立。

客户端:

1,创建客户端的socket,指定客户端的IP对象和端口。

2,创建客户端的对象,进行数据传输。

3,传输或者接受数据。

4,关闭

服务端:

1,创建在指定端口上的服务端对象ServerSocket。

2,获取到在指定端口上监听到对应的客户端socket对象。

3,传输数据/接收数据。

4,关闭流。

五,最后

有一定的心得。了解了tcp的传输原理。

成功完成需求。实现用户端输入需要下载的编号【存储在数据库里】,通过TCP连接,发出请求,客户端响应,传输目标文件个用户端。用户端,保存传输过来的文件。

Java网络编程之实现资源下载详解【王道Java】

Java 网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Hadoop安装教程(单机/伪分布式配置)
下一篇:vagrant系列四:vagrant搭建redis与redis的监控程序redis-stat
相关文章