TCP客戶端進程分割輸入輸出

? ? ? ? ?創建TCP客戶端,創建子進程分割TCP客戶端的read功能和write功能,實現分割I/O的目的。加快客戶端速率。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define BUFF_SIZE 1024
//錯誤輸出
void error_handing(char*message)
{fputs(message, stderr);exit(1);
}
/*
**read_data()函數,實現套接字數據的讀取功能
**socket:讀取數據的套接字句柄
**buff :存儲讀取的數據
*/
void read_data(int socket, char* buff)
{while(1){int len = read(socket, buff, BUFF_SIZE);if(len == 0)return;buff[len] = 0;printf("Message from server is %s\n", buff);}
}
/*
**write_data()函數,實現套接字數據的寫入功能
**socket:寫入數據的套接字句柄
**buff :傳入需要寫入的數據
*/
void write_data(int socket, char* buff)
{while(1){if(strlen(buff)>0)write(socket, buff, strlen(buff));}
}int main()
{//初始化信號和相關變量即buffchar buff[BUFF_SIZE];pid_t pid;uint16_t port = 9999;//1、創建套接字int cli_socket = socket(PF_INET, SOCK_STREAM, 0);//2、綁定連接信息struct sockaddr_in ser_addr;memset(&ser_addr, 0, sizeof(ser_addr));ser_addr.sin_family = AF_INET;ser_addr.sin_addr.s_addr = inet_addr("192.168.1.110");//假設服務器地址為這個ser_addr.sin_port = htons(port);int ser_addrLen = sizeof(ser_addr);//3、連接到服務器if(connect(cli_socket, (struct sockaddr*)&ser_addr, sizeof(ser_addr)) == -1){error_handing("connect() error");}//4、連接成功創建進程,分割輸入和輸出pid = fork();if(pid == 0)read_data(cli_socket, buff);else{char *buf = "hello, I am write";write_data(cli_socket, buf);}close(cli_socket);return 0;
}

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

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

相關文章

Wi-Fi 6 在 2.4GHz 頻段的速率與優化分析

Wi-Fi 6&#xff08;802.11ax&#xff09;在 2.4GHz 和 5GHz 頻段均可工作&#xff0c;理論最高速率可達 1200 Mbps&#xff08;5GHz&#xff0c;80MHz&#xff0c;22 MIMO&#xff09;。但在 2.4GHz 頻段&#xff0c;速率受 信道寬度、MIMO、調制方式、干擾、協議開銷 影響&am…

WPF--Application.Current.Dispatcher.BeginInvoke

1.代碼示例 private void LogInfoList_CollectionChanged(object? sender, NotifyCollectionChangedEventArgs e) {// 直接在這里修改集合會引發遞歸if (e.Action NotifyCollectionChangedAction.Add){if (logInfoList.Count > 200){logInfoList.RemoveAt(0); // 這里會…

ZooKeeper詳解以及應用部署(AI)

ZooKeeper 是一個開源的分布式協調服務框架&#xff0c;旨在為分布式應用提供一致性保障和關鍵協調功能。其核心設計理念是將復雜的分布式一致性邏輯封裝為簡單可靠的接口&#xff0c;讓開發者專注于業務邏輯而非底層協調難題。以下是其核心要點&#xff1a; &#x1f9e0; 一、…

將MySQL數據庫中所有表和字段編碼統一改為utf8mb4_unicode_ci

完整操作步驟 1. 首先修改數據庫默認字符集 sql ALTER DATABASE 你的數據庫名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2. 生成批量修改所有表的SQL語句 sql SELECT CONCAT(ALTER TABLE , table_schema, ., table_name, CONVERT TO CHARACTER SET utf8mb4 C…

jupyterhub的淺淺使用-重點在解決無法登錄

jupyterhub的淺淺使用-重點在解決無法登錄 jupyterhub的淺淺使用-重點在解決無法登錄1、jupyterhub是什么2、創建Dockerfile3、啟動容器3.1、生成配置文件jupyterhub --generate-config3.2、運行容器3.3、進入容器配置用戶密碼3.4、訪問127.0.0.1:8000并登錄 4、后臺創建的用戶…

【Bitcoin基礎】比特幣的地址格式有哪些?如何應用?

比特幣地址格式的分類及應用場景 比特幣地址是用于接收和發送比特幣的標識符&#xff0c;主要有以下幾種格式&#xff0c;每中類型都有其特定的用途和特點: 比特幣地址格式 P2PKH 1xxxx leagcy地址 P2SH 3xxxx 允許更復雜的交易多重簽名 bech32 bc1xxxx bech32mP2TR…

3.1.2_棧的順序存儲實現

知識總覽&#xff1a; 順序棧的定義&#xff1a; 順序棧是用順序存儲實現的 &#xff0c;代碼定義方式和順序表類似(啥是順序表來著&#xff1f;&#xff1f;&#xff1f;) 定義一個順序棧struct結構體SqStack&#xff0c;結構體中有靜態數組data來存放棧里邊的元素1個int型的…

JavaEE初階第一期:計算機是如何 “思考” 的(上)

專欄&#xff1a;JavaEE初階起飛計劃 個人主頁&#xff1a;手握風云 一、馮諾依曼體系結構 1.1. 概念 馮諾依曼體系結構&#xff08;Von Neumann Architecture&#xff09;&#xff0c;是現代計算機的基礎設計概念&#xff0c;核心思想是“存儲程序控制”。具體來說&#xff0c…

SQL Server全局搜索:在整個數據庫中查找特定值的高效方法

SQL Server全局搜索&#xff1a;在整個數據庫中查找特定值的高效方法 一、需求背景&#xff1a;為什么需要數據庫全局搜索&#xff1f; 在數據庫管理和開發過程中&#xff0c;我們經常會遇到這樣的場景&#xff1a; 只記得某個數據值&#xff0c;但忘記了它所在的表或列需要…

萬物皆數:構建數字信號處理的數學基石

萬物皆數&#xff1a;構建數字信號處理的數學基石 歡迎來到數字信號處理&#xff08;DSP&#xff09;的世界。在這里&#xff0c;聲音、圖像、通信信號、醫療數據……一切信息都被轉化為一串串冰冷的數字。然而&#xff0c;正是通過對這些數字的精妙運算&#xff0c;我們得以實…

到院率最高提升40%,消費醫療用AI營銷機器人跑贏增長焦慮

當前&#xff0c;消費醫療機構普遍依賴人工咨詢師進行客戶接待和營銷咨詢。然而&#xff0c;專業咨詢師缺口高達20萬人&#xff0c;大量“護士轉咨詢”“銷售轉咨詢”現象導致方案設計專業性不足&#xff0c;客戶投訴率提升40%。人工客服不僅醫學知識薄弱&#xff0c;學習能力有…

【推薦算法】注意力機制與興趣演化:推薦系統如何抓住用戶的心?

注意力機制與興趣演化&#xff1a;推薦系統如何抓住用戶的心&#xff1f; 一、算法背景知識&#xff1a;從靜態推薦到動態感知1.1 傳統推薦系統的局限性1.2 人類注意力機制的啟示 二、算法理論/結構&#xff1a;動態興趣建模革命2.1 DIN&#xff08;深度興趣網絡&#xff09;&a…

快速入門:創建 Azure 數據資源管理器群集和數據庫

前言 Azure 數據資源管理器是 Microsoft 提供的一項快速、完全托管的數據分析服務。 它允許用戶分析來自應用程序、網站、物聯網設備等的海量數據流,從而簡化復雜的數據探索。 它能夠處理數 PB 的數據,并支持快速檢索數據以進行分析。 主要特點 高性能:ADX 針對快速數據提…

Redis集群模式之Redis Cluster(2)

上篇文章我們講解了Redis Cluster中的主要模塊和兩種重定向方式&#xff0c;這篇文章我們來講解一下Redis Cluster的狀態監測和維護。 Redis Cluster狀態監測及維護 要講解Redis Cluster中節點的狀態如何維護&#xff0c;我們要先知道Redis Cluster中的節點有哪些狀態&#xf…

Step-Audio-AQAA 解讀:邁向「純語音」交互的端到端 LALM 新里程

引言:AI 從聽到說 大型音頻語言模型(Large Audio-Language Models, LALMs)正在徹底改變我們與機器交互的方式。我們不再滿足于簡單的文本問答,而是期望 AI 能夠像人類一樣,通過自然的語音進行交流,理解我們的意圖,并以富有表現力的聲音回應。然而,構建一個能夠直接從語…

基于邊緣計算的絲桿狀態實時監測系統設計?

基于邊緣計算的絲桿狀態實時監測系統設計&#xff0c;可從系統架構、各層功能設計、關鍵技術應用等方面入手&#xff0c;以下為詳細介紹&#xff1a; 系統架構設計 基于邊緣計算的絲桿狀態實時監測系統通常由感知層、邊緣層和云端三部分組成。感知層負責數據采集&#xff0c;…

LeetCode 每日一題 2025/6/9-2025/6/15

記錄了初步解題思路 以及本地實現代碼&#xff1b;并不一定為最優 也希望大家能一起探討 一起進步 目錄 6/9 440. 字典序的第K小數字6/10 3442. 奇偶頻次間的最大差值 I6/11 3445. 奇偶頻次間的最大差值 II6/12 3423. 循環數組中相鄰元素的最大差值6/13 2616. 最小化數對的最大…

PyTorch張量操作中dim參數的核心原理與應用技巧:

今天在搭建神經網絡模型中重寫forward函數時&#xff0c;對輸出結果在最后一個維度上應用 Softmax 函數&#xff0c;將輸出轉化為概率分布。但對于dim的概念不是很熟悉&#xff0c;經過查閱后整理了一下內容。 PyTorch張量操作精解&#xff1a;深入理解dim參數的維度規則與實踐…

Day 31

1. 規范的文件命名 核心原則&#xff1a; 清晰明確&#xff1a;文件名應準確描述內容&#xff08;如data_preprocessing.py&#xff09; 風格統一&#xff1a; 推薦小寫下劃線&#xff08;Python慣例&#xff0c;如model_training.py&#xff09; 或使用駝峰式&#xff08…

學習Oracle------認識VARCHAR2

學習Oracle------認識VARCHAR2 VARCHAR2 是 Oracle 數據庫中專門用于存儲可變長度字符串的數據類型&#xff0c;它是 Oracle 對標準 SQL 數據類型 VARCHAR 的增強和替代。以下是全面解析&#xff1a; 核心概念 名字含義&#xff1a; VAR Variable&#xff08;可變&#xff09…