女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

Linux開發(fā)_網(wǎng)絡(luò)編程基礎(chǔ)(1)

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:19 ? 次閱讀

【摘要】 補充進程通信的知識點,介紹網(wǎng)絡(luò)編程基礎(chǔ),完成服務(wù)器、客戶端創(chuàng)建,實現(xiàn)服務(wù)器與客戶端之間的基本通信。

任務(wù)1:進程

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

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

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

#include 
#include 

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

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

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

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

(2)?popen標準管道;

#include

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

參數(shù)解析:

const char *command:就是需要執(zhí)行的命令,就是可執(zhí)行程序。例如: “l(fā)s -l” “./a.out”

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

int pclose(FILE *stream);

無名管道:

fds[0] 表示讀

fds[1] 表示寫

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

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

標準輸入:0

標準輸出:1

標準錯誤:2

FIFO文件是否可以在創(chuàng)建? 不可在掛載的目錄下創(chuàng)建。

任務(wù)2:網(wǎng)絡(luò)編程

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

socket網(wǎng)絡(luò)編程:運用于多個設(shè)備之間通信。

Socket網(wǎng)絡(luò)編程實際對TCP/IP協(xié)議進行編程。

TCP/IP協(xié)議:

底層協(xié)議:TCP\UDP

上層協(xié)議:HTTP、FTP、NFS……..

??學(xué)習(xí)網(wǎng)絡(luò)編程需要了解的概念:

1.?能夠傳輸網(wǎng)絡(luò)數(shù)據(jù)的方式: 以太網(wǎng)有線網(wǎng)卡、無線網(wǎng)卡WIFI

2.?了解網(wǎng)絡(luò)協(xié)議:如何區(qū)分數(shù)據(jù)是發(fā)給誰的。

3.?IP地址:同一個局域網(wǎng)內(nèi),每臺電腦的IP地址不一樣。

IP地址:區(qū)分每臺電腦。

4.?端口號:同一個電腦內(nèi),區(qū)分不同的應(yīng)用程序。

192.168.1.18:8585

5. TCP協(xié)議:點對點協(xié)議(打電話),數(shù)據(jù)丟包會自動重發(fā),傳輸比較穩(wěn)定。

TCP協(xié)議有3次握手的過程,建立通信的基礎(chǔ)。

一般適用于:FTP文件傳輸、HTTP網(wǎng)頁數(shù)據(jù)傳輸?shù)鹊取?

TCP協(xié)議通信中區(qū)分服務(wù)器與客戶端:

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

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

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

特性就是:實時性

一般適用于:視頻傳輸、視頻監(jiān)控…..QQ視頻

UDP協(xié)議不區(qū)分服務(wù)器與客戶端,發(fā)送數(shù)據(jù)的就是服務(wù)器,接收數(shù)據(jù)的就是客戶端。

6.?數(shù)據(jù)的大小端模式。電腦上的數(shù)據(jù)一般都是小端模式,網(wǎng)絡(luò)數(shù)據(jù)大端模式。

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

??TCP服務(wù)器創(chuàng)建流程

1.?調(diào)用socket函數(shù)創(chuàng)建網(wǎng)絡(luò)通信套接字(用法與open類似)。

2.?調(diào)用bind綁定端口的函數(shù)(填充必須要結(jié)構(gòu)體成員),創(chuàng)建服務(wù)器。

3.?設(shè)置監(jiān)聽端口的數(shù)量(設(shè)置最大能夠連接的客戶端數(shù)量)

4.?調(diào)用accept等待

5.?調(diào)用read或者write函數(shù)進行基本通信

??TCP客戶端創(chuàng)建流程

1.?調(diào)用socket函數(shù)創(chuàng)建網(wǎng)絡(luò)通信套接字(用法與open類似)。

2.?調(diào)用Connect函數(shù)連接指定的服務(wù)器

3.?調(diào)用read或者write函數(shù)進行基本通信

?? 練習(xí)

1.?實現(xiàn)服務(wù)器與客戶端之間的基本通信,收發(fā)數(shù)據(jù)

客戶端:

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

/*
TCP服務(wù)器:
1. sockt創(chuàng)建套接字
2. bind綁定端口
3. 設(shè)置監(jiān)聽的數(shù)量
4. 等待客戶端連接
*/
int socket_sfd; /*保存了服務(wù)器端的套接字*/
int socket_cfd; /*已經(jīng)連接成功的客戶端套接字*/

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6175

    瀏覽量

    137370
  • 網(wǎng)絡(luò)編程
    +關(guān)注

    關(guān)注

    0

    文章

    72

    瀏覽量

    10539
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    Linux網(wǎng)絡(luò)設(shè)置與基礎(chǔ)服務(wù)

    Linux網(wǎng)絡(luò)設(shè)置與基礎(chǔ)服務(wù)
    的頭像 發(fā)表于 04-09 11:51 ?1814次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b>設(shè)置與基礎(chǔ)服務(wù)

    Linux的作用

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

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

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

    【RA8D1試用活動】RA8D1B-CPKCOR開發(fā)板移植linux

    【RA8D1試用活動】RA8D1B-CPKCOR開發(fā)板移植linux
    的頭像 發(fā)表于 11-16 01:02 ?749次閱讀
    【RA8D<b class='flag-5'>1</b>試用活動】RA8D<b class='flag-5'>1</b>B-CPKCOR<b class='flag-5'>開發(fā)</b>板移植<b class='flag-5'>linux</b>

    MCU編程語言和開發(fā)環(huán)境介紹

    微控制器單元(Microcontroller Unit,簡稱MCU)是嵌入式系統(tǒng)的核心,廣泛應(yīng)用于各種電子產(chǎn)品中。隨著技術(shù)的發(fā)展,MCU編程語言和開發(fā)環(huán)境也在不斷進步,以適應(yīng)不同的應(yīng)用需求。 1
    的頭像 發(fā)表于 11-01 11:51 ?2003次閱讀

    Linux網(wǎng)絡(luò)基礎(chǔ)知識總結(jié)

    同 CPU、內(nèi)存以及 I/O 一樣,網(wǎng)絡(luò)也是 Linux 系統(tǒng)最核心的功能。 網(wǎng)絡(luò)是一種把不同計算機或網(wǎng)絡(luò)設(shè)備連接到一起的技術(shù),它本質(zhì)上是一種進程間通信方式,特別是跨系統(tǒng)的進程間通信,
    的頭像 發(fā)表于 10-28 10:42 ?581次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b>基礎(chǔ)知識總結(jié)

    Linux應(yīng)用編程的基本概念

    Linux應(yīng)用編程涉及到在Linux環(huán)境下開發(fā)和運行應(yīng)用程序的一系列概念。以下是一些涵蓋Linux應(yīng)用
    的頭像 發(fā)表于 10-24 17:19 ?569次閱讀

    Linux開發(fā)怎么學(xué)?

    Linux開發(fā)怎么學(xué)? 學(xué)習(xí) Linux 是一個循序漸進、持續(xù)不斷的過程。我們可以從以下幾個方面開始 1.了解 Linux 的歷史和發(fā)展:
    發(fā)表于 10-10 14:34

    Linux網(wǎng)絡(luò)協(xié)議棧的實現(xiàn)

    網(wǎng)絡(luò)協(xié)議棧是操作系統(tǒng)核心的一個重要組成部分,負責管理網(wǎng)絡(luò)通信中的數(shù)據(jù)包處理。在 Linux 操作系統(tǒng)中,網(wǎng)絡(luò)協(xié)議棧(Network Stack)負責實現(xiàn) TCP/IP 協(xié)議簇,處理應(yīng)用
    的頭像 發(fā)表于 09-10 09:51 ?593次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b>協(xié)議棧的實現(xiàn)

    嵌入式linux開發(fā)的基本步驟有哪些?

    嵌入式Linux開發(fā)是一個復(fù)雜的過程,涉及到硬件選擇、操作系統(tǒng)移植、驅(qū)動開發(fā)、應(yīng)用程序開發(fā)等多個方面。以下是嵌入式Linux
    的頭像 發(fā)表于 09-02 09:11 ?1085次閱讀

    嵌入式linux開發(fā)板怎么操作

    嵌入式Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式系統(tǒng)開發(fā)平臺。它通常包括一個處理器、內(nèi)存、存儲器、輸入/輸出接口等硬件組件,以及一個基于L
    的頭像 發(fā)表于 09-02 09:09 ?690次閱讀

    嵌入式linux開發(fā)板芯片的工作原理

    嵌入式Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式系統(tǒng)開發(fā)平臺,它廣泛應(yīng)用于工業(yè)控制、智能家居、智能交通、醫(yī)療設(shè)備等領(lǐng)域。 嵌入式Linux
    的頭像 發(fā)表于 09-02 09:07 ?720次閱讀

    linux開發(fā)板與樹莓派的區(qū)別

    操作系統(tǒng)的微型計算機,主要用于教育、編程、媒體播放等領(lǐng)域。 硬件配置 Linux開發(fā)板:Linux開發(fā)板的硬件配置因廠商和型號而異,通常包括
    的頭像 發(fā)表于 08-30 15:34 ?1747次閱讀

    linux開發(fā)板和單片機開發(fā)的區(qū)別

    、PIC等,處理能力和內(nèi)存容量相對較低。 操作系統(tǒng) Linux開發(fā)板通常使用Linux操作系統(tǒng),具有豐富的軟件資源和開發(fā)工具。單片機開發(fā)則通
    的頭像 發(fā)表于 08-30 15:30 ?1836次閱讀

    Linux 驅(qū)動開發(fā)與應(yīng)用開發(fā),你知道多少?

    一、Linux驅(qū)動開發(fā)與應(yīng)用開發(fā)的區(qū)別開發(fā)層次不同:Linux驅(qū)動開發(fā)主要是針對硬件設(shè)備進行
    的頭像 發(fā)表于 08-30 12:16 ?1420次閱讀
    <b class='flag-5'>Linux</b> 驅(qū)動<b class='flag-5'>開發(fā)</b>與應(yīng)用<b class='flag-5'>開發(fā)</b>,你知道多少?