TCP單進程循環服務器程序與單進程客戶端程序

實驗目的

理解并掌握以下內容:

  1. 網絡進程標識(即套接字地址)在Linux中的數據結構與地址轉換函數。
  2. 網絡字節序與主機字節序的定義、轉換以及相關函數在網絡編程中的應用。
  3. 數據結構內存對齊的基本規則,以及基于數據結構構建PDU的基本方法。
  4. TCP單進程循環服務器與單進程客戶端的編程模式,包括但不限于:
    • 客戶端與服務器套接字系統調用基本流程。
    • 服務器對于客戶端正常結束的識別與處理。
    • 客戶端基于命令行指令的退出設計與實現。
    • Linux軟中斷信號處置原則與實際應用(SIGINT,SIGPIPE)。
    • 慢系統調用的軟中斷退出問題及其處理。

實驗內容

編寫TCP單進程循環服務器與單進程客戶端,其中客戶端可以向服務器發送二元運算請求PDU,服務器收到請求后解析PDU,獲取運算符與操作數,執行運算并向客戶端返回運算結果。具體要求如下:

  • 二元運算包括加(+,ADD)、減(-,SUB)、乘(*,MUL)、整除(/,DIV)、取模(%,MOD),運算數及結果均為64位有符號整型數。
  • 計算指令在命令行以 operator operand1 operand2 的形式給出,如 ADD 123 456
  • 客戶端從 stdin 讀取解析運算指令后,構建"計算請求報文RQT PDU"并發送給服務器。
  • 服務器讀取解析RQT PDU,按要求進行運算,并將運算結果封裝為"計算回復報文REP PDU"發回客戶端。
  • 客戶端讀取解析REP PDU,提取計算結果,并基于從 stdin 讀取解析的運算指令構建運算表達式,且輸出至 stdout

PDU設計定義

  • 本實驗設定PDU沒有頭部(Header),僅有定長負載(Fixed-length Payload)。
  • 請求報文RQT PDU包含一個操作符與兩個操作數,而回復報文REP PDU則只包含運算結果。

操作符

  • 操作符包括 +-*/% 五種類型,使用32位有符號整數表示。操作符與其編號映射關系為:
    • 加 (+): 0x00000001
    • 減 (-): 0x00000002
    • 乘 (*): 0x00000004
    • 整除 (/): 0x00000008
    • 取模 (%): 0x00000010

數據結構

  • 左操作數 OP1、右操作數 OP2 及運算結果 RES 均為64位有符號整數。
  • 必須使用 <stdint.h> 定義的定長整數類型,如 int32_t

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

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

相關文章

電影交流平臺小程序的設計

管理員賬戶功能包括&#xff1a;系統首頁&#xff0c;個人中心&#xff0c;電影類型管理&#xff0c;留言反饋管理&#xff0c;電影中心管理&#xff0c;系統管理 微信端賬號功能包括&#xff1a;系統首頁&#xff0c;電影中心&#xff0c;留言反饋 開發系統&#xff1a;Window…

kvm虛擬機啟用console登錄

kvm虛擬機console登錄&#xff0c;就是執行 virsh console 的時候&#xff0c;宿主機可以控制虛擬機。 一、centos7的kvm虛擬機開啟console登錄&#xff08;在虛擬中操作&#xff09; 1、備份文件 [roothadoop51 ~]# cp /etc/grub2.cfg /etc/grub2.cfg_back 2、用下面命令可…

Git 命令學習之推送本地項目到 Gitee 托管

引言 在軟件開發中&#xff0c;版本控制是不可或缺的一環。Git 作為目前最流行的分布式版本控制系統&#xff0c;廣泛應用于各種項目中。而 Gitee&#xff08;原名碼云&#xff09;作為國內知名的代碼托管平臺&#xff0c;為開發者提供了穩定、安全的代碼托管服務。下面將詳細…

mysql mgr集群斷電重啟

一、前言 mysql mgr集群所有節點都斷電重啟時&#xff0c;就會面臨一個問題&#xff0c;應該怎么重新構建mgr集群 二、操作 查詢所有節點的master狀態 show master status; 查看同步狀態&#xff0c;可以通過uuid知道是通過哪個節點進行同步的數據 查看所有節點的uuid&#x…

【工具推薦】Clink

文章目錄 Clink介紹Clink安裝刪除版權信息 Clink介紹 Clink 是一個工具&#xff0c;它將 GNU Readline 庫的強大命令行編輯功能與 Windows 原生的 cmd.exe 命令提示符結合在一起。Readline 是 Bash shell 中眾所周知的庫&#xff0c;Bash 是許多 Linux 發行版的標準 shell。通…

基于C語言+控制臺的學生信息管理系統

博主介紹&#xff1a; 大家好&#xff0c;本人精通Java、Python、Php、C#、C、C編程語言&#xff0c;同時也熟練掌握微信小程序和Android等技術&#xff0c;能夠為大家提供全方位的技術支持和交流。 我有豐富的成品Java、Python、C#畢設項目經驗&#xff0c;能夠為學生提供各類…

macOS如何查看終端的shell類型

在macOS中&#xff0c;可以通過幾種方式來查看終端&#xff08;Terminal&#xff09;的shell類型。 使用echo命令 打開終端&#xff0c;輸入以下命令&#xff1a; echo $SHELL這將顯示當前使用的shell&#xff0c;例如 /bin/bash 或 /bin/zsh。 查看ps1環境變量 在終端輸入…

大廠面試經典高階SQL題--次日留存率

為什么寫這么一篇文章呢&#xff0c;因為在之前的基金公司面試&#xff0c;1/50的錄取幾率&#xff0c;很榮幸自己可以打敗這么多候選人&#xff0c;被上海著名某基金公司錄取。有一大半人卡在了筆試環節&#xff0c;就說我自個廠商招的一群小伙伴&#xff0c;在辦公室做題的時…

備份SQL Server數據庫并還原到另一臺服務器

我可以將SQL Server數據庫備份到另一臺服務器嗎&#xff1f; 有時您可能希望將 SQL數據庫從一臺服務器復制到另一臺服務器&#xff0c;或者將計算機復制到計算機。可能的場景包括測試、檢查一致性、從崩潰的機器恢復數據庫、在不同的機器上處理同一個項目等。 是的&#xff0c…

【嵌入式】探索嵌入式世界:在ARM上構建俄羅斯方塊游戲的奇妙之旅

文章目錄 前言&#xff1a;1. 簡介2. 總體設計思路及功能描述2.1 設計思路2.2 功能描述2.3 程序流程圖 3. 各部分程序功能及詳細說明3.1 游戲界面函數3.1.1 游戲界面中的圖片顯示3.1.2 游戲開始界面3.1.3 游戲主界面3.1.4 游戲結束廣告界面3.1.5 游戲界面中的觸摸反饋3.1.6 游戲…

C++11新特性【下】

一、lambda表達式 在C98中&#xff0c;如果想要對一個數據集合中的元素進行排序&#xff0c;可以使用std::sort方法。如果待排序元素為自定義類型&#xff0c;需要用戶定義排序時的比較規則&#xff0c;隨著C語法的發展&#xff0c;人們開始覺得上面的寫法太復雜了&#xff0c…

自動備份Docker中的mysql數據庫

先說一下&#xff0c;在Linux下備份mysql 1、先創建一個腳本文件 #!/bin/bash # MySQL 用戶、密碼、數據庫名稱 DB_USER"dbuser" DB_PASSWORD"dbpassword" DATABASE"mydatabase" # 創建備份目錄 BACKUP_DIR"/path/to/your/backup/dire…

化身李時珍弟子,演繹中醫藥故事,李良濟花神戲,創新傳承中醫藥文化

6月29日&#xff0c;李良濟與花神戲聯袂舉辦的兒童劇本&#xff0c;在李良濟嵩山店強勢開啟。 20余名小朋友&#xff0c;一起在這次中醫藥兒童劇本活動中&#xff0c;化身李時珍弟子&#xff0c;學中醫&#xff0c;識草藥&#xff0c;傳承中醫智慧&#xff0c;沉浸式學習傳統文…

Spring Boot與Apache Kafka的深度集成

Spring Boot與Apache Kafka的深度集成 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討如何在Spring Boot應用中實現與Apache Kafka的深度集成&am…

關于一維,二維正態分布的繪制

繪制一維正態分布代碼 % 給定的均值和標準差 mu 0; % 例如&#xff0c;你可以改變這個值 sigma 1; % 例如&#xff0c;你可以改變這個值 % 定義x的范圍&#xff08;例如&#xff0c;從mu-3*sigma到mu3*sigma&#xff0c;步長為0.1&#xff09; x mu - 3*sigma:0.1:m…

STM32 中斷編程入門

目錄 一、中斷系統 1、中斷的原理 2、中斷類型 外部中斷 定時器中斷 DMA中斷 3、中斷處理函數 中斷標志位清除 中斷服務程序退出 二、實際應用 中斷控制LED 任務要求 代碼示例 中斷控制串口通信 任務要求1 代碼示例 任務要求2 代碼示例 總結 學習目標&…

ROS學習筆記(17):建圖與定位(1)

目錄 0.前言 1.定位和建圖 1.里程計&#xff08;Odometry&#xff09; 2.掃描匹配&#xff08;Scan Matching&#xff09; 3.結尾 0.前言 好久不見各位&#xff0c;前段時間忙著考試&#xff08;6級和一些專業課&#xff09;和擺爛斷更了近30天&#xff0c;現在哥們回來更…

計算機畢業設計Python+Spark股票基金推薦與預測系統 股票基金可視化 股票基金推薦系統 股票基金可視化系統 股票基金數據分析 股票基金爬蟲大數據

目 錄 摘 要 Abstract 第1章 前 言 1.1 項目的背景和意義 1.2 研究現狀 1.3 項目的目標和范圍 1.4 論文結構簡介 第2章 技術與原理 2.1 開發原理 2.2 開發工具 2.3 關鍵技術 第3章 需求建模 3.1 系統可行性分析 3.2 功能需求分析 3.3 非功能性…

C++Primer Plus 第十四章代碼重用:編程練習,第一題

CPrimer Plus 第十四章代碼重用&#xff1a;編程練習,第一題 提示&#xff1a;這里可以添加系列文章的所有文章的目錄&#xff0c;目錄需要自己手動添加 CPrimer Plus 第十四章代碼重用&#xff1a;編程練習,第一題 提示&#xff1a;寫完文章后&#xff0c;目錄可以自動生成&am…

高職人工智能專業實訓課之“生成對抗網絡(GAN)”

一、前言 生成對抗網絡&#xff08;GAN&#xff09;作為人工智能領域的一項重要技術&#xff0c;已經在圖像生成、風格遷移、數據增強等多個領域展現出巨大的潛力和應用價值。為了滿足高職院校對GAN專業實訓課程的需求&#xff0c;唯眾人工智能教學實訓憑借其前沿的教育技術平…