2024.3.4 作業

1、流式域套接字

1>tcp服務端實現

#include<myhead.h>
int main(int argc, const char *argv[])
{//1、創建套接字int sfd = socket(AF_UNIX, SOCK_STREAM, 0);if(sfd == -1){perror("socket error");return -1;}//2、判斷套接字文件是否存在,如果存在則需要刪除if(access("./mysocket", F_OK) == 0){//說明存在,將該文件刪除if(unlink("./mysocket") == -1){perror("unlink error");return -1;}}//綁定套接字文件//2.1 填充地址信息結構體struct sockaddr_un sun;sun.sun_family = AF_UNIX;strcpy(sun.sun_path, "./mysocket");//2.2 綁定 if(bind(sfd, (struct sockaddr*)&sun, sizeof(sun)) == -1){perror("bind error");return -1;}printf("bind success\n");//3、監聽if(listen(sfd,128) == -1){perror("listen 128");return -1;}printf("listen success\n");//4、阻塞等待客戶端連接需求//定義容器接受客戶端地址信息struct sockaddr_un cun;socklen_t socklen = sizeof(cun);int newfd = -1;if((newfd = accept(sfd, (struct sockaddr*)&cun, &socklen)) == -1){perror("accept error");return -1;}printf("有新客戶發來連接請求\n");//5、數據收發char rbuf[128]= "";while(1){//清空bzero(rbuf, sizeof(rbuf));recv(newfd, rbuf, sizeof(rbuf), 0);printf("[%s]:%s\n",cun.sun_path, rbuf);//連接一個笑臉回復strcat(rbuf, "*_*");//發送回去send(newfd, rbuf, strlen(rbuf), 0);printf("發送成功\n");}//6、關閉套接字close(sfd);close(newfd);return 0;
}

客戶端實現

#include<myhead.h>int main(int argc, const char *argv[])
{//1、創建用于通信的套接字文件描述符int cfd = socket(AF_UNIX, SOCK_STREAM, 0);if(cfd == -1){perror("socket error");return -1;}printf("cfd = %d\n", cfd);          //3//判斷套接字文件是否存在,如果存在則需要刪除if(access("./mysocket1", F_OK) == 0){//說明存在,將該文件刪除if(unlink("./mysocket1") == -1){perror("unlink error");return -1;}}//2、綁定(非必須)//2.1 填充地址信息結構體struct sockaddr_un cun;cun.sun_family = AF_UNIX;strcpy(cun.sun_path, "./mysocket1");//2.2 綁定if(bind(cfd, (struct sockaddr*)&cun, sizeof(cun)) == -1){perror("bind error");return -1;}printf("bind success\n");//3、連接服務器//3.1填充要連接的服務器地址信息結構體struct sockaddr_un sun;sun.sun_family = AF_UNIX;   //地址族strcpy(sun.sun_path, "./mysocket");      //套接字文件//3.2 連接服務器if(connect(cfd, (struct sockaddr*)&sun, sizeof(sun))==-1){perror("connect error");return -1;}printf("connect success\n");//4、數據收發char wbuf[128] = "";while(1){//清空數據bzero(wbuf, sizeof(wbuf));printf("請輸入>>>");fgets(wbuf, sizeof(wbuf), stdin);   //從終端輸入wbuf[strlen(wbuf)-1] = 0;//將數據發送給服務器send(cfd, wbuf, strlen(wbuf), 0);printf("發送成功\n");//判斷發送的數據if(strcmp(wbuf, "quit") == 0){break;}//接收服務器發來的消息//清空數據bzero(wbuf, sizeof(wbuf));recv(cfd, wbuf, sizeof(wbuf), 0); printf("收到消息為:%s\n", wbuf);}//5、關閉套接字close(cfd);return 0;
}

2>報式域套接字

服務端實現:

#include<myhead.h>int main(int argc, const char *argv[])
{//1、創建用于通信的套接字int sfd = socket(AF_UNIX, SOCK_DGRAM, 0);if(sfd == -1){perror("socket error");return -1;}printf("sfd = %d\n", sfd);           //3//判斷套接字文件是否存在,如果存在則需要刪除if(access("./linux1", F_OK) == 0){//說明存在,將該文件刪除if(unlink("./linux1") == -1){perror("unlink error");return -1;}}//2、綁定IP地址和端口號//2.1填充地址信息結構體struct sockaddr_un sun;sun.sun_family = AF_UNIX;          //地址族strcpy(sun.sun_path, "./linux1");//2,2綁定if(bind(sfd, (struct sockaddr*)&sun, sizeof(sun)) == -1){perror("bind error");return -1;}printf("bind success\n");//3、收發數據char rbuf[128] = "";//定義容器接收對端地址信息結構體struct sockaddr_un cun;socklen_t socklen = sizeof(cun);while(1){//清空數組bzero(rbuf, sizeof(rbuf));//接收數據recvfrom(sfd, rbuf, sizeof(rbuf), 0, (struct sockaddr*)&cun, &socklen);printf("收到消息為:%s\n", rbuf);//將消息加個笑臉回過去strcat(rbuf, "*_*");if(sendto(sfd, rbuf, strlen(rbuf), 0, (struct sockaddr*)&cun, socklen) == -1){perror("sendto error");return -1;}}//4、關閉套接字close(sfd);return 0;
}

客戶端實現:

#include<myhead.h>int main(int argc, const char *argv[])
{//1、創建用于通信的套接字int cfd = socket(AF_UNIX, SOCK_DGRAM, 0);if(cfd == -1){perror("socket error");return -1;}printf("cfd = %d\n", cfd);           //3//判斷套接字文件是否存在,如果存在則需要刪除if(access("./linux2", F_OK) == 0){//說明存在,將該文件刪除if(unlink("./linux2") == -1){perror("unlink error");return -1;}}//2、綁定IP地址和端口號(如果要接收服務器消息必須綁定)struct sockaddr_un cun;cun.sun_family = AF_UNIX;strcpy(cun.sun_path, "./linux2");if(bind(cfd, (struct sockaddr*)&cun, sizeof(cun))==-1){perror("bind error");return -1;}//3、收發數據char wbuf[128] = "";//定義容器,記錄服務器的地址信息結構體struct sockaddr_un sun;sun.sun_family = AF_UNIX;strcpy(sun.sun_path,"./linux1");while(1){//清空數組bzero(wbuf, sizeof(wbuf));//從終端獲取數據printf("請輸入>>>");fgets(wbuf, sizeof(wbuf), stdin);wbuf[strlen(wbuf)-1] = 0;//將數據發送給服務器sendto(cfd, wbuf, sizeof(wbuf), 0, (struct sockaddr*)&sun, sizeof(sun));printf("發送成功\n");//接收服務器回復的消息bzero(wbuf, sizeof(wbuf));recvfrom(cfd, wbuf, sizeof(wbuf), 0, NULL, NULL);printf("收到消息為:%s\n", wbuf);}//4、關閉套接字close(cfd);return 0;
}


?

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

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

相關文章

5G工業智能網關保障煤礦安全生產

隨著物聯網技術發展與煤礦需求的持續激增&#xff0c;礦山礦井的分布范圍廣泛、戶外環境惡劣等管理問題急需解決&#xff0c;而物聯網網關工業級設計能夠無懼惡劣環境干擾&#xff0c;輕松解決戶外網絡部署問題。 工業網關通過采集礦井內的各類傳感器數據對礦井進行遠程監控&a…

MySQL中的大表優化方案

當MySQL單表記錄數過大時&#xff0c;數據庫的CRUD性能會明顯下降&#xff0c;一些常見的優化措施如下&#xff1a; 1&#xff1a;限定數據的范圍 務必禁止不帶任何限制數據范圍條件的查詢語句。比如&#xff1a;我們當用戶在查詢訂單歷史的時候&#xff0c;我們可以控制在一個…

【NR 定位】3GPP NR Positioning 5G定位標準解讀(五)

前言 3GPP 標準網址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位標準解讀&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位標準解讀&#xff08;二&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位…

[GYCTF2020]EasyThinking --不會編程的崽

看標題就知道&#xff0c;這大概率是關于thinkphp的題目。先嘗試錯誤目錄使其報錯查看版本號 thinkphp v6.0.0&#xff0c;在網上搜索一下&#xff0c;這個版本有一個任意文件上傳漏洞。參考以下文章。 https://blog.csdn.net/god_zzZ/article/details/104275241 先注冊一個賬…

VL53L8CX驅動開發(1)----驅動TOF進行區域檢測

VL53L8CX驅動開發----1.驅動TOF進行區域檢測 概述視頻教學樣品申請源碼下載主要特點硬件準備技術規格系統框圖應用示意圖區域映射生成STM32CUBEMX選擇MCU 串口配置IIC配置LPn 設置X-CUBE-TOF1串口重定向代碼配置Tera Term配置演示結果 概述 VL53L8CX是一款8x8多區域ToF測距傳感…

STM32(6)中斷

1.中斷 1.1 中斷的概念 STM32的中斷&#xff1a; 1.2 中斷優先級 用數字的大小表示中斷優先級的高低&#xff0c;數字的范圍&#xff1a;0000--1111&#xff08;二進制&#xff09;&#xff0c;即0-15&#xff0c;共16級優先級。 進一步對這4位二進制數進行劃分&#xff0c;可…

demo型xss初級靶場

一、環境 XSS Game - Ma Spaghet! | PwnFunction 二、開始闖關 第一關 看看代碼 試一下直接寫 明顯進來了為什么不執行看看官方文檔吧 你不執行那我就更改單標簽去使用唄 ?somebody<img%20src1%20onerror"alert(1)"> 防御&#xff1a; innerText 第二關…

區塊鏈技術深度賦能多元行業應用的全景解析

隨著科技的日新月異&#xff0c;區塊鏈這一顛覆性技術正以前所未有的速度從理論走向實踐&#xff0c;并在眾多行業中扮演著關鍵性的變革角色。其獨特的分布式賬本、去中心化運作、公開透明以及數據不可篡改等核心特性&#xff0c;為金融、物聯網&#xff08;IoT&#xff09;、供…

常見的排序算法-(字解版)

快速排序算法 例如&#xff1a;3 1 2 7 5 6 第一次基數&#xff1a; 3 [] 1 2 7 5 6 3 和 6 5 7 比都比 3 大 &#xff0c; 位置不變 [] 1 2 7 5 63 和 2 比 &#xff0c;大于 2 放在右邊。 2 1 [] 7 5 63 和 1 比 &#xff0c;大于 1 位置不變。 2 1 3 7 5 6 把 3 的左邊和右…

分賬系統哪個好 盤點2024年好用的四款分賬系統

分賬系統在現代商業活動中扮演著至關重要的角色&#xff0c;為企業提供了高效、準確的分賬管理。那么&#xff0c;你知道2024年哪幾款分賬系統最好用呢&#xff1f;跟著小編的腳步去看看吧&#xff01; 一、商淘云 商淘云是廣州商淘信息科技有限公司旗下品牌&#xff0c;它提…

SPI是什么?

SPI是“串行外設接口”&#xff08;Serial Peripheral Interface&#xff09;的縮寫&#xff0c;它是一種高速的、全雙工、同步的通信協議&#xff0c;主要用于芯片與外設之間進行高速數據交換。SPI通信協議通常由一個主設備和一個或多個從設備組成。其核心是主設備控制時鐘信號…

ShardingJdbc分庫分表-淺談分表原理

文章目錄 為什么要分庫分表一、分庫分表二、不停機分庫分表數據遷移 為什么要分庫分表 一般的機器&#xff08;4核16G&#xff09;&#xff0c;單庫的MySQL并發&#xff08;QPSTPS&#xff09;超過了2k&#xff0c;系統基本就完蛋了。最好是并發量控制在1k左右。這里就引出一個…

matplotlib從起點出發(14)_Tutorial_imshow_origin_extent

0 總述 imshow()允許你將圖像&#xff08;將進行顏色映射——基于norm和cmap——的2D數組或將按原樣使用的3D RGB(A)的數組&#xff09;渲染到數據空間中的矩形區域。最終渲染中圖像的方向由原點和范圍關鍵字參數&#xff08;以及生成的AxesImage實例上的屬性&#xff09;和Ax…

一.數據分析簡介

目錄 一、了解數據分析 1.1 什么是數據分析 1.2 數據分析的重要性 1.3 數據分析的基本流程 數據獲取 數據處理 1.4 數據分析的應用場景 客戶分析 營銷分析 二、數據分析工具 jupyter 2.1 編輯器安裝 2.2 Jupyter快捷使用 一、了解數據分析 學習數據分析&#xff0…

[激光原理與應用-75]:激光器設計過程中,功率下降的主要原因大全

目錄 前言&#xff1a;激光器的本質是“電”轉“光”的設備 一、激光器功率下降的原因 二、壽命到期導致功率下降的因素 三、光損耗導致激光器輸出功率下降的因素 四、激光器中的能量轉化不完全導致的功率下降的因素 五、溫度變化導致激光器功率下降的影響因素 六、材料…

LeetCode28 最后一個單詞的長度

題目 給你一個字符串 s&#xff0c;由若干單詞組成&#xff0c;單詞前后用一些空格字符隔開。返回字符串中 最后一個 單詞的長度。單詞 是指僅由字母組成、不包含任何空格字符的最大子字符串。 示例 示例 1&#xff1a;輸入&#xff1a;s "Hello World" 輸出&#x…

Spring Security Oauth資源服務器并發情況下獲取用戶信息錯亂

文章目錄 Oauth2 資源服務器并發情況下獲取用戶信息錯亂問題描述項目配置源碼分析 解決方案1、修改源碼2&#xff0c;添加新的子類實現&#xff0c;并作為新bean注入 Oauth2 資源服務器并發情況下獲取用戶信息錯亂 問題描述 當用戶A與用戶B分別持有一個合法的令牌token 訪問同…

FPGA之加法邏輯運算

由于FPGA需要被反復燒寫&#xff0c;它實現組合邏輯的基本結構不可能像ASIC 那樣通過固定的與非門來完成&#xff0c;而只能采用一種易于反復配置的結構。查找表可以很好地滿足這一要求&#xff0c;目前主流FPGA都采用了基于SRAM 工藝的查找表結構。LUT本質上就是一個RAM。它把…

HarmonyOS-卡片頁面能力說明和使用動效能力

卡片頁面能力說明 開發者可以使用聲明式范式開發ArkTS卡片頁面。如下卡片頁面由DevEco Studio模板自動生成&#xff0c;開發者可以根據自身的業務場景進行調整。 ArkTS卡片具備JS卡片的全量能力&#xff0c;并且新增了動效能力和自定義繪制的能力&#xff0c;支持聲明式范式的…

python | 列表,元組,字符串,集合,字典

列表&#xff1a; 可以容納任意數目不同類型的元素&#xff08;支持我們學過的任意數據類型&#xff09;元素之間有先后順序用中括號包裹&#xff0c;每個元素用逗號隔開 例如&#xff1a; students [林黛玉,薛寶釵,賈元春,賈探春,史湘云,妙玉,賈迎春,賈惜春,王熙鳳,賈巧姐…