第十三週的做業。
html
目錄
1.本章學習總結
2.Java Q&A
3.碼雲上代碼提交記錄及PTA實驗總結
4.課後閱讀java
1.1 以你喜歡的方式(思惟導圖、OneNote或其餘)概括總結網絡相關內容。
下文來自與Java核心技術,有不少零散的知識點:正則表達式
耗時不一樣,由於210.34.128.152在福建廈門,上圖183.232.231.173在廣東廣州,距離近,耗時短。數據庫
23
編程
並非,啥都沒有小程序
返回主頁的網頁源代碼瀏覽器
QQ 使用8080端口 183.192.196.210來自上海市上海市 移動服務器
8080端口同80端口,是被用於WWW代理服務的,能夠實現網頁瀏覽,常常在訪問某個網站或使用代理服務器的時候,會加上「:8080」端口號。網絡
firefox 都是使用80端口
80端口是爲HTTP開放的
223.202.6.26來自北京市朝陽區 BGP多線
這個BGP多線??
還有183.250.178.82來自福建省廈門市 移動
蝦米音樂 113.18.220.108來自福建省福州市 移動多線程
IP、端口、域名、協議
大體類似,就是有些多是顏色控制符不能解析出來
由於沒有發送get請求獲取html文檔
必定要再加個newline,由於咱們輸入GET / HTTP/1.0後,要連續敲兩次回車。
2.1演示過了
啓動兩個線程,一個線程用來接受信息,一個線程用來發送信息
忘記加服務器本身發的消息沒有在服務器端顯示,這個加一句輸出就行了。
socket的輸入輸出流是字節流,而後用字符流來包裝。
Java網絡編程與流之間的關係:
Java programs see network connections as streams of data that can be interpreted and responded to in any way necessary.
好比文件傳輸:
首先發送端從本地文件系統中讀取文件,而且建立和接收端的網絡鏈接,而後發送端提供數據包裝器,而且把文件寫入這個包裝器中,而後寫到網絡中。接收端創建新文件,鏈接發送端,經過網絡接收到數據並進行解包,將數據寫到緩衝區中,最後從緩衝區寫到本地新建的文件中去。這其中數據都是以字節流的形式來保存的。
主要功能就是客戶端與服務端之間的通訊
ClientChart:設置客戶端界面
ClientReadThread:客戶端讀取線程
ClientListener:客戶端的監聽器
服務端同理可得
MainThread:啓動服務端;監聽到客戶端鏈接後,加入客戶端的列表中;啓動服務端讀取線程
改爲3了,5跑的過久……
題目集:多線程(4-4到4-10)
在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖
Networking Basics
在網上運行的電腦都是用TCP和UDP來進行互相通訊的。當咱們寫網絡程序的時候,都是在應用層上操做。通常來講,咱們都不用關心TCP和UDP層。可使用java.net包。這些類提供獨立於系統地網絡通訊。
TCP:
當兩個應用想可靠地和對方聯繫,他們會創建聯繫並在這個鏈接上收發數據。這就像是打電話。TCP保證從鏈接一端發送的數據均可以到達另外一端,而且都會按照發送的順序接收到。不然,就會報錯。
TCP爲須要可靠聯繫的應用提供點對點的通道。HTTP,FTP和Telnet都是這樣的例子。數據收發的順序對於這些應用來講是很重要的。當HTTP用來從URL上讀取數據的時候,數據就必須按照發送的順序接收。不然,就會收到混亂的HTML文件,崩潰的壓縮文件或者是無效的信息。
UDP:
UDP的通訊是不能保證的。它從一個應用發送數據包,datagrams到另外一個應用。發送數據包就像是經過郵寄服務送信:順序是不重要的,也不能保證。
有些通訊是不須要那麼嚴格的標準的。事實上,可能由於可靠通訊所產生的額外費用致使服務無效。
好比對於時鐘服務來講,數據包丟了,再發一次是沒有道理的,由於客戶第二次收到的時候,時間已經不對了。若是客戶發出兩次請求,而且收到了無序的數據包,這並不重要,由於客戶能夠本身分辨出來而後再發一次請求。TCP在這種場合是毫無必要的,並且會致使時鐘服務無效。另外一個例子就是ping命令,這邊不作贅述。
總的來講,一臺主機只有一個物理鏈接。全部數據都經過這個鏈接到特定的電腦。然而,數據可能會出於不一樣的目的在這臺主機上運行。因此電腦要想知道是什麼應用發送的數據,就用經過使用端口。
在網上傳輸的數據都會帶上主機的地址信息還有目的端口。主機由32位的IP地址來指定,IP地址能夠用來將數據準確的送到網上的某臺主機上。端口就是一個16位的數字,TCP和UDP就能夠送到正確的程序上。
URL:
URL是統一資源定位的縮寫,是網上資源的引用。咱們能夠向Web瀏覽器提供URL來定位網上的文件,就像是在信上提供地址,郵局才能知道往哪邊寄。
Java的Internet程序會用到URL來尋找想要訪問的網上資源。可使用java.net中的URL類來表示一個URL地址。
Socket:
URL和URLConnections提供相對高級的機制來訪問網上的資源。有時程序須要使用低級的網絡通訊。
例如,服務端提供一些服務,好比處理數據庫的訪問和發送最新的股價。客戶使用服務端提供的服務,顯示數據庫的查詢結果或者說向投資者提供股票購買推薦意見。兩方的通訊必須是可靠的。數據不能丟失,並且必須按照服務端發送的順序到達客戶端。每一個程序都會綁定一個socket在鏈接的末端。爲了通訊,客戶端和服務端都要從socket中讀取或者是寫入。
Datagrams
一些應用是不須要TCP提供的可靠的、點對點的通道來通訊。這時候就可使用UDP來進行通訊。
UDP提供一種網絡通訊的模式,應用是發送數據包的,就是datagram。datagram是獨立的,是否到達,到達時間和內容都是無法保證的。Java提供了相應的類,即DatagramPacket和DatagramSocket。
服務器把網頁給瀏覽器,就是把網頁的HTML代碼給瀏覽器,而後 讓它顯示出來而已。瀏覽器和服務器之間的傳輸協議就是HTTP。
GET / HTTP/1.1:
GET表示一個讀取請求,將從服務器得到網頁數據,1.1是HTTP協議的版本,大部分服務器也支持1.0版本。
瀏覽器依靠Content-Type來判斷響應的內容所屬的類型。
當瀏覽器讀取到HTML源碼後,它會解析HTML,顯示頁面,而後,根據HTML裏面的各類連接,再發送HTTP請求給服務器,得到相應資源。
FileReader類:
用來讀連接文件(存放商品的連接),而後getLines()能夠返回一個存放Url的列表。
Url類:
getConnection()用來得到連接,返回URLConnection類型
getReader()用來得到連接的輸入流
isExist()用來判斷是否含有相應字符串,在該程序中就是用來判斷是否含有free_msg字符串,即金子商品,若是有,則返回真。具體實現即用BufferedReader按行讀取。
Digger類:
這個類繼承Thread類,每讀入一個連接,就開啓一個線程,查看是否有相應字符串,若是有的話,就用IE來打開連接
Runtime.getRuntime().exec("C:/Program Files/Internet Explorer/iexplore.exe " + url.getUrl());