色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

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

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

任務1:進程

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

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

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

#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(“l(fā)s -l >123.txt”); //重定向輸出

(2)?popen標準管道;

#include

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

參數解析:

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); //實現文件描述符的重定向

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

標準輸入:0

標準輸出:1

標準錯誤:2

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

任務2:網絡編程

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

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

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

TCP/IP協議:

底層協議:TCP\UDP

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

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

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

2.?了解網絡協議:如何區(qū)分數據是發(fā)給誰的。

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

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

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

192.168.1.18:8585

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

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

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

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

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

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

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

特性就是:實時性

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

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

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

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

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

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

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

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

4.?調用accept等待

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

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

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

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

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

?? 練習

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

客戶端:

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

/*
TCP服務器:
1. sockt創(chuàng)建套接字
2. bind綁定端口
3. 設置監(jiān)聽的數量
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; //存放返回值狀態(tài)
	/*1. 創(chuàng)建套接字*/
	socket_sfd=socket(AF_INET,SOCK_STREAM,0);
	if(socket_sfd<0)
	{
		printf("服務器端創(chuàng)建失敗!\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. 設置監(jiān)聽的數量*/
	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. 收發(fā)數據 :服務器給客戶端發(fā)送10個字節(jié)的數據*/
	err=write(socket_cfd,"123456789",10);
	printf("服務器成功發(fā)送:%d 字節(jié)\r\n",err);
	return 0;
}

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

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

    關注

    18

    文章

    6069

    瀏覽量

    136303
  • 網絡編程
    +關注

    關注

    0

    文章

    72

    瀏覽量

    10089
收藏 人收藏

    評論

    相關推薦

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

    【RA8D1試用活動】RA8D1B-CPKCOR開發(fā)板移植linux
    的頭像 發(fā)表于 11-16 01:02 ?308次閱讀
    【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)是嵌入式系統的核心,廣泛應用于各種電子產品中。隨著技術的發(fā)展,MCU編程語言和開發(fā)環(huán)境也在不斷進步,以適應不同的應用需求。 1
    的頭像 發(fā)表于 11-01 11:51 ?1001次閱讀

    Linux網絡基礎知識總結

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

    Linux應用編程的基本概念

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

    Linux開發(fā)怎么學?

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

    Linux網絡協議棧的實現

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

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

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

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

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

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

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

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

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

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

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

    Linux 驅動開發(fā)與應用開發(fā),你知道多少?

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

    Linux是做什么用的?

    Ubuntu、Fedora、Debian等)提供了友好的用戶界面和豐富的應用程序。 4、開發(fā)平臺:Linux提供了豐富的開發(fā)工具和環(huán)境,支持多種編程語言和
    發(fā)表于 04-28 15:40

    Linux網絡編程

    :面向報文,不可靠,(類似于雙方發(fā)短信),適用于數據量大且不需要準確傳輸 進程間通信是基于Linux內核的,不適用于兩臺手機之間的通信。 ? 字節(jié)序: 小端:將低序字節(jié)存儲在起始地址 大端:將高序字節(jié)存儲在起始地址 電腦是小端字節(jié)序,網絡字節(jié)序是大端字節(jié)序。
    的頭像 發(fā)表于 03-26 10:58 ?373次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網絡</b><b class='flag-5'>編程</b>

    fpga開發(fā)板與linux開發(fā)板區(qū)別

    (Field-Programmable Gate Array)是一種可編程邏輯器件,它可以通過編程改變硬件邏輯電路的功能和結構。FPGA采用了可編程的門極,可以根據需要重新配置內部電路,從而實現不同的功能和邏輯關系。而
    的頭像 發(fā)表于 02-01 17:09 ?2396次閱讀
    主站蜘蛛池模板: 久久久91精品国产一区二区 | 伊人久久精品99热超碰 | 国产免费看片 | 99久久久精品 | 诱人的女邻居9中文观看 | 美女尿口羞羞视频 | 做暖暖视频在线看片免费 | 90后美女乳沟 | 伊人久久免费 | 99国产强伦姧在线看RAPE | 扒开双腿疯进出爽爽爽动态图 | 男人边吃奶边挵进去呻吟漫画 | 精品AV国产一区二区三区 | 接吻吃胸摸下面啪啪教程 | 国产午夜精品久久理论片 | 51无码人妻精品1国产 | 2018高清国产一区二区三区 | 古代荡女丫鬟高H辣文纯肉 姑娘视频日本在线播放 | 欧美s00老人 | 西西人体大胆牲交PP6777 | 在线播放一区 | 入禽太深免费高清在线观看5 | 亚洲午夜福利未满十八勿进 | 九九久久久 | 久久精品美女久久 | 亚洲国语在线视频手机在线 | 色欲AV亚洲永久无码精品 | 蜜芽在线影片 | 99久久免费看国产精品 | 精品国产福利一区二区在线 | 日产久久视频 | 中文字幕乱码一区久久麻豆樱花 | 最近日本免费观看MV免费 | 国内精品久久久久久久999下 | 一级性生活毛片 | 一扒二脱三插片在线观看 | 老色69久久九九精品高潮 | 午夜福利免费体检区 | 精品亚洲欧美中文字幕在线看 | 帅小伙和警官同性3p | 快播av网址 |