201521123122 《java程序设计》第十三周学习总结
## 201521123122 《java程序設計》第十三周實驗總結 ##
1. 本周學習總結
以你喜歡的方式(思維導圖、OneNote或其他)歸納總結多網絡相關內容。
2. 書面作業
1. 網絡基礎
1.1 比較ping www.baidu.com與ping cec.jmu.edu.cn,分析返回結果有何不同?為什么會有這樣的不同?
1.結果如圖所示:
2.ping是測試網絡聯接狀況以及信息包發送和接收狀況非常有用的工具,是網絡測試最
常用的命令。ping向目標主機(地址)發送一個回送請求數據包,要求目標主機收到請求后給予答復,從而判斷網絡的響應時間和本機是否與目標主機(地址)連通。
3.其中字節(bite)是發送的字節量 ,時間(time)是返回的時間數值,越小速度越快,TTL(time to live)是指數據包從去到返回所生存的時間。
4.從cmd的運行結果中可以看到,訪問www.baidu.com的響應時間要比訪問cec.jmu.edu.cn的時間長,因為cec.jmu.edu.cn的服務端離我們更近吧
1.2 telnet bbs.newsmth.net,上面這條命令連接的是遠程主機的什么端口號?
在cmd中運行如下:
telnet 命令一般是連接23端口
參考鏈接如何查看網絡端口?
1.3 telnet cec.jmu.edu.cn 80,嘗試回答:你從屏幕看到一些什么內容?返回的內容是不是cec.jmu.edu.cn的主頁內容?嘗試使用GET /index HTTP/1.0命令,會返回什么?詳見實驗任務書題目1。
在cmd中運行結果如下:
如果客戶端要和遠程服務器相連接時,一定要遵循HTTP協議。
1.4 啟動ConnectionWatcher, 然后啟動若干個可以聯網的程序(如QQ, telnet,瀏覽器等),查看本機上有什么程序聯網,使用了什么端口?QQ占用了什么端口和那些遠程IP進行交互,這些IP分布地在那里?使用了什么協議進行通信?
截圖所示:
聯網的程序有QQ,360等,使用了很多端口,如360 使用了443端口,qq占用了80端口,8080端口和443端口,使用了TCP協議進行通信。如36.250.8.154分布在中國 福建省 福州市聯通。
1.5 編寫網絡程序必不可少的幾個信息是什么?
套接字(IP+端口) 使用TCP還是UDP協議,輸入輸出流。
2. 編寫TCP客戶端程序
2.1 參照SocketTest.java編寫一個簡單的連接遠程服務器小程序Client.java,可以接收并顯示服務器發送的信息。啟動時需要首先在控制臺指定遠程主機IP與端口號。(截圖,出現自己學號)
2.2 將程序中的網址改成bbs.newsmth.net,端口號改為23,再次觀察返回結果?嘗試執行telnet bbs.newsmth.net 23,對比返回結果。
顯示內容是一樣的,是因為不同的編碼導致看起來有所不同。
2.3 將程序中的網址改成cec.jmu.edu.cn,端口號改為80進一步觀察返回結果。沒有任何返回結果,為什么?怎么操作
沒有返回結果,因為客戶端向遠程服務器發送信息時,要遵循HTTP協議
2.4 啟動網絡調試助手,將其設置為TCP Server,并啟動,如下圖所示嘗試使用Client.java連接該TCP Server,使用該服務器向Client發送信息。(截圖)
2.5 回答:現在的Client.java只能接收信息,能否改造Client.java使其可以與服務器進行交互(服務器可以發送信息給Client,Client也可發送信息給服務器),寫出大概思路即可。
2.6 選做:實現2.5
在原有的代碼中添加一個輸出流,利用flush函數,將緩存區的數據讀出即可。
2.4+2.5代碼截圖如下:
參考:實驗任務書-題目2
3. ServerSocket與TCP服務器
3.1 簡易單線程MenuServer,題目3.1-3.4。(關鍵代碼及運行截圖,包含學號)可以使用網絡調試助手,將其設置為TCP Client(IP與端口填你的MenuServer的IP與端口),連接你的MenuServer。其中的文件搜索功能為選做。
文件搜索函數沒寫。
3.2 多線程MenuServer(截圖證明你這個是多線程服務器,使用telnet連接)。
4. UDP服務器
4.1 改造3.1或3.2,將其改造成基于UDP的MenuServer。(運行界面代碼截圖,包含學號)??梢允褂镁W絡調試助手,將其設置為UDP,要填本機IP與端口也要填遠程服務器的IP與端口。
參考:UDPServer.java
5. 論述題:網絡程序與流
5.1 前面編寫的程序用到了大量的流的相關知識。簡述,編寫網絡程序時應當選擇什么樣的流?Java網絡編程、流之間的關系。場景如:簡單的文字聊天、文件傳輸、應用層協議服務器,如QQ、聊天室、網絡游戲。
網絡編程的實質就是在兩臺或者多臺計算機中進行數據的傳輸,而流在其中起了傳輸數據的作用,基本的Socket客戶端是用輸入流和輸出流來實現兩臺主機之間的數據傳遞。socket的輸入輸出流是字節流,然后用字符流來包裝。
6. 代碼閱讀
閱讀ServerAndThread目錄中的源代碼
6.1 修改程序,在GUI界面中某個地方顯示自己的學號,然后運行該程序(截圖、出現學號)。簡述這個程序的主要功能。
實現客戶端和服務端之間的通信。
6.2 畫出源代碼的結構圖(各個類的依賴關系)。并簡要說明各個類的功能。
| 類 | 功能 |
| ClientChart | 客戶端JFrame窗口化,JLabel,JTextField和JButton的增加 |
| ClientListener | 監聽器 |
| ClientReadThread | 接收客戶端信息并顯示 |
| ServerChart | 服務端JFrame窗口化,JLabel,JTextField和JButton的增加 |
| SeverActionListener | 監聽器 |
| MainThread | 建立在線用戶列表 |
| ServerReadThread | 提示用戶連接情況,服務端把收到的消息轉發給所有的用戶 |
6.3 簡述這個程序有什么不足之處及改進方法.
不同客戶端發送的信息在每一個客戶端中都會顯示,單看客戶端 無法知道是哪一個客戶端發出的信息。
3. 碼云
碼云代碼提交記錄
在碼云的項目中,依次選擇“統計-Commits歷史-設置時間段”, 然后搜索并截圖
4.課外閱讀
4.1 Java Tutorial:Custom Networking
Trail: Custom Networking
主要看Overview of Networking,Working With URLs,All About Sockets,All About Datagrams
4.2 HTTP協議簡介
4.3一個簡單的小爬蟲
Java編程技巧:小爬蟲程序.docx
4.4 進階:HTTPComponent的使用
使用java中的Socket、URL、URLConnection,然后遵循HTTP協議也可以編寫一個小程序,和可以查詢成績的HTTP服務器進行交流。然而直接使用Socket編程較麻煩,這時候我們可以使用HTTPComponent。
HTTPComponent相比傳統JDK自帶的URLConnection,增加了易用性和靈活性
1. 閱讀HttpClient 教程,使用HTTPComponent編寫一些與HTTP服務器交換的示例程序
2. 選做:使用HTTPComponent開發一個查詢成績的程序:用戶輸入用戶名、密碼、驗證碼,即可自動查詢教務處服務器,獲取成績。
轉載于:https://www.cnblogs.com/fenm/p/6882846.html
總結
以上是生活随笔為你收集整理的201521123122 《java程序设计》第十三周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ajax表单提交给C#后台选中的chec
- 下一篇: java SSM 框架 多数据源 代码生