国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux開發_網絡編程基礎(1)

DS小龍哥-嵌入式技術 ? 2022-09-17 15:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【摘要】 補充進程通信的知識點,介紹網絡編程基礎,完成服務器、客戶端創建,實現服務器與客戶端之間的基本通信。

任務1:進程

(1)?進程的創建和管理

(2)?命名管道與無名管道基本運用

(3)?信號的接收和發送(鬧鐘的信號)

#include 
#include 

/*信號處理函數*/
void sighandler(int signal_num)
{
	alarm(1);
	printf("SIGNAL:%d\n",signal_num);
}

int main(int argc,char **argv)
{
	/*綁定信號到特定的函數*/
	signal(SIGALRM,sighandler);
	alarm(1); //設置鬧鐘
	while(1)
	{
		
	}
	return 0;
}

需求:通過C語言代碼獲取其他進程(c語言代碼、Shell腳本)的返回值。

(1)?system(“ls -l >123.txt”); //重定向輸出

(2)?popen標準管道;

#include

FILE *popen(const char *command, const char *type);

參數解析:

const char *command:就是需要執行的命令,就是可執行程序。例如: “ls -l” “./a.out”

const char *type: “w”寫 “r”讀

int pclose(FILE *stream);

無名管道:

fds[0] 表示讀

fds[1] 表示寫

int dup2(int oldfd, int newfd); //實現文件描述符的重定向

示例: dup2(fds[1],1); //將本程序的標準輸出定義到管道的寫端

標準輸入:0

標準輸出:1

標準錯誤:2

FIFO文件是否可以在創建? 不可在掛載的目錄下創建。

任務2:網絡編程

管道: 運用多個進程之間的通信。

socket網絡編程:運用于多個設備之間通信。

Socket網絡編程實際對TCP/IP協議進行編程。

TCP/IP協議:

底層協議:TCP\UDP

上層協議:HTTP、FTP、NFS……..

??學習網絡編程需要了解的概念:

1.?能夠傳輸網絡數據的方式: 以太網有線網卡、無線網卡WIFI

2.?了解網絡協議:如何區分數據是發給誰的。

3.?IP地址:同一個局域網內,每臺電腦的IP地址不一樣。

IP地址:區分每臺電腦。

4.?端口號:同一個電腦內,區分不同的應用程序。

192.168.1.18:8585

5. TCP協議:點對點協議(打電話),數據丟包會自動重發,傳輸比較穩定。

TCP協議有3次握手的過程,建立通信的基礎。

一般適用于:FTP文件傳輸、HTTP網頁數據傳輸等等…….

TCP協議通信中區分服務器與客戶端:

服務器必須先存在,客戶端才可以連接。(網絡游戲)

客戶端與客戶端之間可以通信?必須通過服務器—模式就是(C/S)

5.?UDP協議:廣播方式協議(上課一樣)。

特性就是:實時性

一般適用于:視頻傳輸、視頻監控…..QQ視頻

UDP協議不區分服務器與客戶端,發送數據的就是服務器,接收數據的就是客戶端。

6.?數據的大小端模式。電腦上的數據一般都是小端模式,網絡數據大端模式。

7.?Socket編程與文件操作原理是一樣。一切皆文件!

??TCP服務器創建流程

1.?調用socket函數創建網絡通信套接字(用法與open類似)。

2.?調用bind綁定端口的函數(填充必須要結構體成員),創建服務器。

3.?設置監聽端口的數量(設置最大能夠連接的客戶端數量)

4.?調用accept等待

5.?調用read或者write函數進行基本通信

??TCP客戶端創建流程

1.?調用socket函數創建網絡通信套接字(用法與open類似)。

2.?調用Connect函數連接指定的服務器

3.?調用read或者write函數進行基本通信

?? 練習

1.?實現服務器與客戶端之間的基本通信,收發數據

客戶端:

#include 
#include 
#include 
#include 
#include 
#include 

/*
TCP服務器:
1. sockt創建套接字
2. bind綁定端口
3. 設置監聽的數量
4. 等待客戶端連接
*/
int socket_sfd; /*保存了服務器端的套接字*/
int socket_cfd; /*已經連接成功的客戶端套接字*/

int main(int argc,char **argv)
{
	if(argc!=3)
	{
		printf("./server <192.168.xx.xx 本地IP地址> <服務器端口號>\n");
		exit(-1);
	}
	
	int err; //存放返回值狀態
	/*1. 創建套接字*/
	socket_sfd=socket(AF_INET,SOCK_STREAM,0);
	if(socket_sfd<0)
	{
		printf("服務器端創建失敗!\n");
		exit(-1);
	}
	
	/*2. 綁定端口*/
	struct sockaddr_in ServerAddr;
	ServerAddr.sin_family=AF_INET; //IPV4協議
	ServerAddr.sin_port=htons(atoi(argv[2]));      //服務器的端口號 最大值65535
	ServerAddr.sin_addr.s_addr=inet_addr(argv[1]); //IP地址賦值
	err=bind(socket_sfd,(const struct sockaddr *)&ServerAddr,sizeof(struct sockaddr));
	if(err!=0)
	{
		printf("服務器端 端口綁定失敗!\n");
		exit(-1);
	}
	
	/*3. 設置監聽的數量*/
	listen(socket_sfd,10);
	
	/*4. 等待客戶端連接*/
	struct sockaddr_in ClientAddr; //存放已經連接成功客戶端信息
	socklen_t addrlen=sizeof(struct sockaddr);    //客戶端的地址長度
	socket_cfd=accept(socket_sfd,(struct sockaddr *)&ClientAddr,&addrlen);
	if(socket_cfd<0)
	{
		printf("服務器端,連接客戶端失敗!\r\n");
		exit(-1);
	}
	
	/*打印一些客戶端的信息*/
	printf("成功連接的客戶端端口號:%d\n",ntohs(ClientAddr.sin_port));
	printf("成功連接的客戶端IP地址:%s\n",inet_ntoa(ClientAddr.sin_addr));
	
	/*5. 收發數據 :服務器給客戶端發送10個字節的數據*/
	err=write(socket_cfd,"123456789",10);
	printf("服務器成功發送:%d 字節\r\n",err);
	return 0;
}

2.?實現服務器與客戶端之間的文件傳輸。(單個文件傳輸)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    6389

    瀏覽量

    140049
  • 網絡編程
    +關注

    關注

    0

    文章

    73

    瀏覽量

    11111
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    DR1平臺Linux應用開發指南:含GDB調試、Python及MQTT實戰

    本文為創龍科技DR1 系列評估板 Linux 應用開發手冊,系統講解開發環境搭建、GDB 調試、多類型應用案例及 MQTT 通信實現。核心內容包括 LinuxSDK 與工具鏈配置、GD
    的頭像 發表于 01-05 16:48 ?4577次閱讀
    DR<b class='flag-5'>1</b>平臺<b class='flag-5'>Linux</b>應用<b class='flag-5'>開發</b>指南:含GDB調試、Python及MQTT實戰

    Linux驅動開發的必備知識

    內核基礎知識: 1、熟悉 Linux 內核的架構、模塊系統、進程管理、內存管理等。 了解內核的編譯和加載過程。 2、C編程技能: 精通 C 語言編程,包括指針操作、內存管理、結
    發表于 12-04 07:58

    基于 DR1M90 的 Linux-RT 內核開發:從編譯配置到 GPIO / 按鍵應用實現(1

    本手冊由創龍科技研發,針對 DR1M90,詳述 Linux-RT 實時內核開發:含實時性測試(LinuxLinux-RT 對比、CPU
    的頭像 發表于 12-02 10:38 ?1184次閱讀
    基于 DR<b class='flag-5'>1</b>M90 的 <b class='flag-5'>Linux</b>-RT 內核<b class='flag-5'>開發</b>:從編譯配置到 GPIO / 按鍵應用實現(<b class='flag-5'>1</b>)

    基于安路DR1M90 FPSoC的Linux系統全流程開發指南(4)

    本手冊由創龍科技研發,針對安路飛龍 DR1M90,詳述 Linux 系統開發流程:LinuxSDK 配置編譯、BOOT.bin(FSBL+U-Boot)開發、Kernel 與 Root
    的頭像 發表于 11-30 15:46 ?2185次閱讀
    基于安路DR<b class='flag-5'>1</b>M90 FPSoC的<b class='flag-5'>Linux</b>系統全流程<b class='flag-5'>開發</b>指南(4)

    基于安路DR1M90 FPSoC 的Linux 系統全流程開發指南(3)

    本手冊由創龍科技研發,針對安路飛龍 DR1M90,詳述 Linux 系統開發流程:LinuxSDK 配置編譯、BOOT.bin(FSBL+U-Boot)開發、Kernel 與 Root
    的頭像 發表于 11-26 17:01 ?321次閱讀
    基于安路DR<b class='flag-5'>1</b>M90 FPSoC 的<b class='flag-5'>Linux</b> 系統全流程<b class='flag-5'>開發</b>指南(3)

    基于安路DR1M90 FPSoC 的Linux 系統全流程開發指南(1

    本手冊由創龍科技研發,針對安路飛龍 DR1M90,詳述 Linux 系統開發流程:LinuxSDK 配置編譯、BOOT.bin(FSBL+U-Boot)開發、Kernel 與 Root
    的頭像 發表于 11-25 14:09 ?388次閱讀
    基于安路DR<b class='flag-5'>1</b>M90 FPSoC 的<b class='flag-5'>Linux</b> 系統全流程<b class='flag-5'>開發</b>指南(<b class='flag-5'>1</b>)

    【免費送書】成為硬核Linux開發者:《Linux 設備驅動開發(第 2 版)》

    Linux系統的設備驅動開發,一直給人門檻較高的印象,主要因內核機制抽象、需深度理解硬件原理、開發調試難度大所致。2021年,一本講解驅動開發的專著問世即獲市場青睞,暢銷近萬冊——這便
    的頭像 發表于 11-18 08:06 ?1414次閱讀
    【免費送書】成為硬核<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>者:《<b class='flag-5'>Linux</b> 設備驅動<b class='flag-5'>開發</b>(第 2 版)》

    RK3506開發Linux開發板極致性價比之選

    RK3506開發Linux開發板極致性價比之選瑞芯微RK3506開發板,3核Cortex-A7@1.5GHz+Cortex-M0,Linux
    的頭像 發表于 09-11 16:26 ?3465次閱讀
    RK3506<b class='flag-5'>開發</b>板<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>板極致性價比之選

    Linux 應用開發手冊

    T507linux應用開發手冊
    發表于 08-22 17:01 ?15次下載

    Linux系統中網絡配置詳解

    網絡配置是Linux系統運維中的核心技能之一。正確理解和配置子網掩碼、網關等網絡參數,直接影響系統的網絡連通性和性能。本文將深入探討Linux
    的頭像 發表于 07-17 11:01 ?1202次閱讀

    【HZ-T536開發板免費體驗】2 - 交叉編譯倉頡編程語言程序到開發板運行

    :提供微服務應用開發框架,具備 IOC 容器、AOP 切面編程、ORM 和事務管理等能力,幫助開發者快速構建微服務應用。還可通過輕量級用戶態線程以及高性能網絡協議庫,高效
    發表于 07-16 21:27

    Linux網絡管理的關鍵技術和最佳實踐

    在大型互聯網企業中,Linux網絡管理是運維工程師的核心技能之一。面對海量服務器、復雜網絡拓撲、高并發流量,運維人員需要掌握從基礎網絡配置到高級網絡
    的頭像 發表于 07-09 09:53 ?949次閱讀

    Linux網絡設置與基礎服務

    Linux網絡設置與基礎服務
    的頭像 發表于 04-09 11:51 ?3414次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網絡</b>設置與基礎服務

    Linux的作用

    工具和環境,支持多種編程語言和開發框架。許多開發人員使用Linux作為開發平臺,進行軟件開發、系
    發表于 04-04 01:57

    [迅為]Linux開發小技巧:Remote - SSH插件

    [迅為]Linux開發小技巧:Remote - SSH插件
    的頭像 發表于 04-01 15:46 ?1168次閱讀
    [迅為]<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>小技巧:Remote - SSH插件