網絡編程(簡單模擬文件下載)

今天咱們將使用一個簡單的小Demo模擬網絡文件的下載。
咱們將會用一道題來說述網絡編程所用到的知識點,問題以下:
利用網絡編程內容從客戶端向服務端發送一個文件,而後服務端保存在其餘地方。
咱們首先建立兩個java文件,一個用作客戶端,一個用作服務端,客戶端進行文件上傳模擬,服務端進行文件下載模擬。
首先在服務端建立ServerSocket,給定一個端口號。java

ServerSocket ss = new ServerSocket(1110);//參數爲端口號
			System.out.println("等待上線。。。");

端口號是指每個軟件與服務器進行通訊的特定「門牌號」,1-1024的端口號大部分爲系統內置軟件,通常不會使用(可使用,但通常不用)。
在進行服務端建立後,咱們就要在客戶端建立Socket用來與服務端進行通訊。web

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能夠在公衆號上邊與我交流哦。

在這裏插入圖片描述svg

相關文章
相關標籤/搜索