實驗六 Java流式編程與網絡程序設計 頭歌

實驗六 Java流式編程與網絡程序設計 頭歌

制作不易!點個關注!給大家帶來更多價值!

第1關 字節輸入/輸出流實現數據的保存和讀取

package step1;import java.io.*;
import java.util.*;public class SortArray {public static void main(String[] args) {/********** Begin **********/// 創建保存整型數據的數組(數組大小10)int[] data= new int[10];// 給數組賦隨Scanner sc = new Scanner(System.in);for (int i = 0; i < data.length; i++) {data[i] = sc.nextInt();//data[i]=1+(int)(Math.random()*100);}// 將數組元素按有小到大順序排列Arrays.sort(data);try {// 創建數據保存文件,如果文件不存在,重新創建File file = new File("data.txt");if (!file.exists()) {file.createNewFile();}// 創建FileOutputStream和DataOutputStream 輸出流FileOutputStream fout=new FileOutputStream(file);DataOutputStream dout=new DataOutputStream(fout);// 利用輸出流向文件中寫入數組數據for(int i=0;i<data.length;i++){dout.writeInt(data[i]);}// 關閉輸出流dout.close();fout.close();// 創建FileInputStream和DataInputStream 輸入流FileInputStream f=new FileInputStream(file);DataInputStream d=new DataInputStream(f);// 利用輸入流從文件讀取數據并輸出for(int i=0;i<data.length;i++){System.out.print(d.readInt());if(i<data.length-1){System.out.print("<");}}// 關閉輸入流d.close();f.close();} catch (IOException e) {// 異常處理System.out.println("讀寫發生異常");}/********** End **********/}
}

第2關 字符輸入/輸出流實現發送電報

package step2;import java.io.*;
import java.util.Scanner;public class Encrypt {public static void main(String[] args) throws IOException {// 創建要發送的電報Scanner sc = new Scanner(System.in);String data = sc.next();// 將電報分割成字符數組/********** Begin **********/char[]a=data.toCharArray();/********** End **********/// 打開指定存放電報的文件,如果文件不存在,則創建File file = new File("data.txt");if(!file.exists()) {file.createNewFile();}// 循環遍歷字符數組,將每個字符加密處理for (int i = 0; i < a.length; i++) {a[i] = (char) (a[i] ^ 'q');}// 利用字符輸出流FileWriter將加密后的字符數組寫入文件中/********** Begin **********/FileWriter fw =new FileWriter(file);fw.write(a,0,a.length);fw.close();/********** End **********/// 利用字符輸入流FileReader讀取文件,將密文輸出/********** Begin **********/FileReader fr=new FileReader(file);char[] arr=new char[a.length];fr.read(arr);System.out.println("密文:");System.out.println(arr);/********** End **********/// 利用字符輸入流FileReader讀取文件,將密文轉換為明文輸出    /********** Begin **********/for(int i=0 ;i<a.length;i++){arr[i]=(char)(arr[i]^'q');}System.out.println("明文:");System.out.println(arr);/********** End **********/    }
}

第3關 簡單TCP通信

Client.java

package step3;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;public class Client {public static void main(String[] args) throws Exception {Server server = new Server();server.start();Scanner sc = new Scanner(System.in);//創建客戶端Socket(s),指定服務器端IP地址和端口號/********** Begin **********/Socket s = new Socket("127.0.0.1", 8080);/**********  end  **********/DataOutputStream dos = new DataOutputStream(s.getOutputStream());DataInputStream dis = new DataInputStream(s.getInputStream());System.out.println(dis.readUTF());String name = sc.next();dos.writeUTF(name);System.out.println(dis.readUTF());s.close();}
}

Server.java

package step3;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class Server extends Thread {@Overridepublic void run() {try {//創建服務器端ServerSocket(ss),指定端口號8000/********** Begin **********/ServerSocket ss = new ServerSocket(8080);/**********  end  **********/Socket s = ss.accept();DataOutputStream dos = new DataOutputStream(s.getOutputStream());DataInputStream dis = new DataInputStream(s.getInputStream());dos.writeUTF("你已經連上服務器了,告訴我你的姓名...");String name = dis.readUTF();dos.writeUTF("再見:" + name);s.close();} catch (IOException e) {e.printStackTrace();}}
}

第4關 TCP通信實現奇偶數判斷

ClientPlus.java

package step4;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;public class ClientPlus {public static void main(String[] args) {Scanner sc = new Scanner(System.in);ServerPlus server = new ServerPlus();server.start();try {//創建客戶端Socket(s),指定服務器端IP地址和端口號/********** Begin **********/Socket s = new Socket("127.0.0.1", 8080);/**********  end  **********/DataOutputStream dos = new DataOutputStream(s.getOutputStream());DataInputStream dis = new DataInputStream(s.getInputStream());//客戶端通過循環依次接收服務器返回的結果,并輸入新的整數傳遞給服務器/********** Begin **********/while (true) {System.out.println(dis.readUTF());String num = sc.next();dos.writeUTF(num);}/**********  end  **********/} catch (EOFException e) {} catch (IOException e) {e.printStackTrace();}}
}

ServerPlus.java

package step4;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class ServerPlus extends Thread {@Overridepublic void run() {try {/********** Begin **********///創建服務器端ServerSocket(ss),指定端口號8000ServerSocket ss = new ServerSocket(8080);/**********  end  **********/Socket s = ss.accept();DataOutputStream dos = new DataOutputStream(s.getOutputStream());DataInputStream dis = new DataInputStream(s.getInputStream());ReceiveThread thread = new ReceiveThread(s, dos, dis);thread.start();} catch (IOException e) {e.printStackTrace();}}
}

ReceiveThread.java

package step4;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.SocketException;class ReceiveThread extends Thread {DataOutputStream dos;DataInputStream dis;Socket s;public ReceiveThread(Socket s, DataOutputStream dos, DataInputStream dis) {this.s = s;this.dos = dos;this.dis = dis;}@Overridepublic void run() {try {dos.writeUTF("請輸入一個整數,我知道是奇數還是偶數");while(true) {String num = dis.readUTF();if("-1".equals(num)) {s.close();break;} String result = (Integer.parseInt(num)%2==0)?"偶數":"奇數";dos.writeUTF(num + "是..." + result);}            } catch (SocketException e) {try {s.close();} catch (IOException e1) {e1.printStackTrace();}} catch (IOException e) {System.out.println("數據讀取異常");} }    
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13745.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

洗地機品牌哪個牌子好?實力派洗地機品牌TOP10榜單

洗地機依靠其洗、拖、吸、烘為一體的功能&#xff0c;能高效的完成地面清潔的工作&#xff0c;深受大家的喜愛。但是洗地機的型號越來越多&#xff0c;功能也越來越多&#xff0c;對于不想花大價錢&#xff0c;又想要高性價比的精致人群來說實在不友好&#xff0c;所以筆者今天…

C++ 中重寫重載和隱藏的區別

重寫&#xff08;override&#xff09;、重載&#xff08;overload&#xff09;和隱藏&#xff08;overwrite&#xff09;在C中是3個完全不同的概念。我們這里對其進行詳細的說明 1、重寫&#xff08;override&#xff09;是指派生類覆蓋了基類的虛函數&#xff0c;這里的覆蓋必…

如何寫好科研論文(討論)

討論1. 如何去選取第一批要閱讀的論文&#xff1f; 當我選擇第一批要閱讀的論文時&#xff0c;我會遵循以下幾個步驟&#xff0c;以確保所選的論文對我的研究最有幫助&#xff1a; 研究問題的相關性&#xff1a; 明確我的研究問題或主題&#xff1a;首先&#xff0c;我會確保自…

實例展示vue單元測試及難題解惑

通過生動詳實的例子帶你排遍vue單元測試過程中的所有疑惑與難題。 技術棧&#xff1a;jest、vue-test-utils。 共四個部分&#xff1a;運行時、Mock、Stub、Configuring和CLI。 運行時 在跑測試用例時&#xff0c;大家的第一個絆腳石肯定是各種undifned報錯。 解決這些報錯…

【HarmonyOS4學習筆記】《HarmonyOS4+NEXT星河版入門到企業級實戰教程》課程學習筆記(九)

課程地址&#xff1a; 黑馬程序員HarmonyOS4NEXT星河版入門到企業級實戰教程&#xff0c;一套精通鴻蒙應用開發 &#xff08;本篇筆記對應課程第 16 節&#xff09; P16《15.ArkUI-狀態管理-任務統計案例》 1、實現任務進度卡片 怎么讓進度條和進度展示文本堆疊展示&#xff1…

./scripts/Makefile.clean 文件分析

文章目錄 目標 $(subdir-ymn)目標__clean $(clean-dirs): ??? make -f ./scripts/Makefile.clean obj$(patsubst _clean_%,%,$) $(clean-dirs)$(patsubst _clean_%,%,$)_clean_api _clean_cmd _clean_common _clean_disk _clean_drivers _clean_drivers/ddr/altera _clean_d…

react中的useEffect()的使用

useEffect()是react中的hook函數&#xff0c;作用是用于創建由渲染本身引起的操作&#xff0c;而不是事件的觸發&#xff0c;比如Ajax請求&#xff0c;DOM的更改 首先useEffect()是個函數&#xff0c;接受兩個參數&#xff0c;第一個參數是一個方法&#xff0c;第二個參數是數…

數據結構--樹與二叉樹--編程求以孩子兄弟表示法存儲的森林的葉結點個數

數據結構–樹與二叉樹–編程求以孩子兄弟表示法存儲的森林的葉結點個數 題目 編程求以孩子兄弟表示法存儲的森林的葉結點個數 ps&#xff1a;題目來源2025王道數據結構 思路 樹上的操作大多數是通過遞歸進行的 我們可以從根節點開始遞歸 如果結點 N 沒有孩子指針&#xff…

【Entity Framework】如何理解EF中的級聯刪除

【Entity Framework】如何理解EF中的級聯刪除 文章目錄 【Entity Framework】如何理解EF中的級聯刪除一、概述二、發生級聯行為時2.1/刪除主體/父實體2.2/斷開關系 三、發生級聯行為的位置3.1/級聯刪除被跟蹤實體3.2/數據庫中的級聯刪除 四、級聯NULL 一、概述 Entity Framewo…

vue3 路由跳轉 攜帶參數

實現功能&#xff1a;頁面A 跳轉到 頁面B&#xff0c;攜帶參數 路由router.ts import { createRouter, createWebHistory } from "vue-router";const routes: RouteRecordRaw[] [{path: "/demo/a",name: "aa",component: () > import(&quo…

x264 碼率控制原理:x264_ratecontrol_start 函數

x264_ratecontrol_start 函數 函數原理 函數功能:編碼一幀之前,為當前幀選擇一個量化 QP,屬于幀級別碼率控制;這對于控制視頻質量和文件大小至關重要。通過調整QP,編碼器可以在保持視頻質量的同時,盡可能減小輸出文件的大小。函數參數:x264_t *h: 編碼器上下文結構體指…

十七、個人信息出境標準合同的具體內容有哪些?

根據《標準合同辦法》第六條&#xff0c;標準合同應當嚴格按照網信辦制定版本訂立&#xff0c;個人信息處理者可以與境外接收方約定其他條款&#xff0c;但不得與標準合同相沖突。 根據《標準合同辦法》附件&#xff0c;目前版本的標準合同內容主要包括&#xff1a; 1. 個人信…

Flutter 中的 TextButton 小部件:全面指南

Flutter 中的 TextButton 小部件&#xff1a;全面指南 在Flutter的世界里&#xff0c;TextButton是一個基礎的小部件&#xff0c;用于創建只包含文本的按鈕。它通常用于對話框、表單以及需要強調主要操作的界面。本文將為您提供一個全面的指南&#xff0c;幫助您了解如何使用T…

地信遙感測繪電子書

《地理信息系統概論》&#xff0c;黃杏元&#xff0c;馬勁松編著&#xff0c;第三版&#xff0c;高等教育出版社&#xff0c;2008年 《地理信息系統》&#xff08;第二版&#xff09;湯國安&#xff0c;趙牡丹&#xff0c;楊昕等編&#xff0c;高等教育出版社&#xff0c;2010…

【stm32/CubeMX、HAL庫】嵌入式實驗五:定時器(2)|PWM輸出

參考&#xff1a; 【【正點原子】手把手教你學STM32CubeIDE開發】 https://www.bilibili.com/video/BV1Wp42127Cx/?p13&share_sourcecopy_web&vd_source9332b8fc5ea8d349a54c3989f6189fd3 《嵌入式系統基礎與實踐》劉黎明等編著&#xff0c;第九章定時器&#xff0c…

8操作系統定義、分類及功能+設備管理+作業管理 軟設刷題 軟考+

操作系統定義、分類及功能設備管理作業管理 知識點1-55-1010-1515-2020-2525-3030-35 刷題操作系統定義、分類及功能1-55-1010-15作業管理1-5設備管理1-55-10 知識點 1-5 1 嵌入式操作系統的特點&#xff1a; 1.微型化&#xff0c;從性能和成本角度考慮&#xff0c;希望占用的…

145.棧和隊列:刪除字符串中的所有相鄰重復項(力扣)

題目描述 代碼解決 class Solution { public:string removeDuplicates(string s) {// 定義一個棧來存儲字符stack<char> st;// 遍歷字符串中的每一個字符for(int i 0; i < s.size(); i){// 如果棧為空或棧頂字符與當前字符不相同&#xff0c;則將當前字符入棧if(st.e…

Jenkins的Pipeline流水線

目錄 前言 流水線概念 什么是流水線 Jenkins流水線 pipeline node stage step 創建一個簡單的流水線 創建Pipeline項目 選擇模板 測試 前言 提到 CI 工具&#xff0c;首先想到的就是“CI 界”的大佬——Jenkjns,雖然在云原生爆發的年代,蹦出來了很多云原生的 CI 工具…

Hive的窗口函數

定義&#xff1a; 聚合函數是針對定義的行集(組)執行聚集,每組只返回一個值.如sum()、avg()、max() 窗口函數也是針對定義的行集(組)執行聚集,可為每組返回多個值.如既要顯示聚集前的數據,又要顯示聚集后的數據.步驟&#xff1a; 1.將記錄分割成多個分區. 2.在各個分區上調用窗…

word-表格疑難雜癥診治

一、用表格進行排版圖片、制作公文頭 可以在插入圖片時固定列寬 二、表格中的疑難雜癥 問題一&#xff1a;表格超過頁面&#xff0c;右側文字看不見 解決&#xff1a;表格窗口-布局-自動調整-根據窗口自動調整表格 問題二&#xff1a;表格底部文字被遮擋 解決&#xff1a;布…