网络编程(简单模拟文件下载)

今天我们将使用一个简单的小Demo模拟网络文件的下载。
我们将会用一道题来讲述网络编程所用到的知识点,问题如下:
利用网络编程内容从客户端向服务端发送一个文件,然后服务端保存在其他地方。
我们首先创建两个java文件,一个用做客户端,一个用做服务端,客户端进行文件上传模拟,服务端进行文件下载模拟。
首先在服务端创建ServerSocket,给定一个端口号。

			ServerSocket ss = new ServerSocket(1110);//参数为端口号
			System.out.println("等待上线。。。");

端口号是指每一个软件与服务器进行通信的特定“门牌号”,1-1024的端口号大部分为系统内置软件,一般不会使用(可以使用,但一般不用)。
在进行服务端创建后,我们就要在客户端创建Socket用来与服务端进行通信。

			Socket client = new Socket("localhost", 1110);
			//第一个参数是ip地址,本地可以使用localhost代替,第二个是服务端设置好的端口号

localhost与127.0.0.1在使用过程中都可以代表本机,但是要注意localhost是域名,127.0.0.1是ip地址。
接下来我们就可以进行对io流的操作了,关于io流的操作我们改天会讲,在这里就不做过多的阐述了。具体代码如下
服务端:

public static void main(String[] args) {
		try {
			ServerSocket ss = new ServerSocket(1110);//设置服务端的端口号
			System.out.println("等待上线。。。");
			Socket accept = ss.accept();//接受客户传递来的信息
			System.out.println("有人上线了!!!");
			File f = new File("d:\\1.mp4");//创建保存的地址
			InputStream in = accept.getInputStream();
			OutputStream out = new FileOutputStream(f);
			int len = 0;
			byte[] b = new byte[1024];
			while((len=in.read(b))!=-1) {
				out.write(b);
			}
			System.out.println("传输完毕");
			//最后要注意关闭资源
			ss.close();
			in.close();
			out.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

客户端

public static void main(String[] args) {
		try {
			Socket client = new Socket("localhost", 1110);//设置访问的ip地址和要访问的端口号
			OutputStream out = client.getOutputStream();
			File f = new File("C:\\List集合.mp4");//要上传文件的地址
			InputStream in = new FileInputStream(f);
			String s = "我来充钱了";
			int len = 0;
			byte[] b = new byte[1024];
			while((len = in.read(b))!=-1) {
				out.write(b, 0, len);
			}
			//注意关流
			client.close();
			out.close();
			in.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

本次只是一个小的Demo,还有许多可以改进的地方,比如关流的实机可以放在finally中,还有文件的位置可以自己选择,这时候就需要使用字符串来分割文件的后缀名等等情况,大家如果有兴趣可以自己尝试的完善。

我是一个正在偷偷努力学习java的大胖子,有任何问题大家都可以发在我的个人公众号上边,我也会尽量帮大家解决,当然,我也只是一个正在学习java的人,并不能保证“每个(其实是大部分问题都不能)”问题都能回答上来。
还有我的个人公众号会不定时更新我的java学习之路,大家如果也在学习java可以在公众号上边与我交流哦。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值