在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

Linux開發_網絡編程、網絡通信介紹

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

【摘要】 介紹Linux網絡編程: TCP網絡編程、UDP網絡編程案例,完成數據互相發送。

任務1: 網頁視頻監控

1.?學習網絡編程

2.?USB攝像頭

3.?HTTP協議: 搭建HTTP服務器。

??網絡編程------TCP/IP協議編程----一套軟件協議----->數據結構。

pYYBAGMlOyeAVTNnAACXA9IWko0152.png

??網絡編程底層協議: (從網絡收發一個字節)

1.?TCP協議(C/S): 點對點傳輸協議。數據傳輸可靠的。 適合傳輸大數據。

2.?UDP協議: 廣播方式傳輸協議 (對特定端口號進行廣播)。數據相對TCP不可靠的。---不適合傳輸大數據,傳輸小塊數據。

??網絡編程的上層協議:

1.?HTTP協議: 超文本傳輸協議----網絡使用。

2.?FTP協議: 文件傳輸協議---傳輸單文件。

3.?NFS協議: 文件傳輸協議----網絡文件系統。

??TCP協議編程:

1.?服務器: 等待客戶端連接。

2.?客戶端: 連接服務器。 QQ客戶端、xxx游戲客戶端。

poYBAGMlOyiAJKi8AAFwdCAi0iI791.pngpYYBAGMlOyiAPsWwAAEDiYXYfuo021.pngpoYBAGMlOyiAfnHpAAEK8xZpK1g676.png

網絡協議: 大端模式。

計算機IPV4的端口號范圍: 0~65535 。自己編寫的程序端口號: >1024

TCP服務器:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include           /* See NOTES */
#include 
#include 
#include  /* superset of previous */

#define PORT 1234

/*
TCP服務器創建:
1. 創建socket套接字
2. 綁定端口號: 服務器創建
3. 設置監聽端口的數量: 服務器最大等待連接的客戶端總數量
4. 等待客戶端連接
*/
int main(int argc,char **argv)
{
	/*1. 創建套接字*/
	int server_fd=socket(AF_INET,SOCK_STREAM,0);
	if(server_fd<0)
	{
		printf("TCP服務器:創建套接字創建失敗!\n");
		return -1;
	}
	
	/*2. 綁定端口號*/
	struct sockaddr_in server_addr;
	memset(&server_addr,0,sizeof(struct sockaddr_in));
	server_addr.sin_family=AF_INET; //IPV4
	server_addr.sin_port=htons(PORT); //需要填大端格式的端口號數據
	server_addr.sin_addr.s_addr=0;//inet_addr("192.168.18.3");
	/*0=inet_addr("0.0.0.0") ---表示本地所有IP地址*/
	if(bind(server_fd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr_in))!=0)
	{
		printf("TCP服務器:綁定端口號失敗!\n");
		return -2;
	}
	printf("struct sockaddr_in=%d\n",sizeof(struct sockaddr_in)); //16
	printf("struct sockaddr=%d\n",sizeof(struct sockaddr)); //16
	
	/*3. 設置監聽客戶端連接的數量*/
	listen(server_fd,50);
	
	/*4. 等待客戶端連接:阻塞*/
	struct sockaddr_in client_addr;
	int addrlen=sizeof(struct sockaddr_in);
	int client_fd=accept(server_fd,(struct sockaddr *)&client_addr,&addrlen);
	if(client_fd<0)
	{
		printf("服務器提示:等待客戶端連接出現錯誤!\n");
		return 0;
	}
	
	/*5. 數據的通信*/
	char buff[]="1234567890";
	int cnt=write(client_fd,buff,strlen(buff)+1);
	printf("發送:%d,%s\n",cnt,buff);
	/*6. 關閉服務器套接字*/
	close(server_fd);
	return 0;
}

TCP客戶端:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include           /* See NOTES */
#include 
#include 
#include  /* superset of previous */

#define PORT 1234

/*
TCP客戶端:
1. 創建socket套接字
2. 連接指定TCP服務器
*/
int main(int argc,char **argv)
{
	if(argc!=2)
	{
		printf("./app server_ip\n");
		return 0;
	}
	/*1. 創建套接字*/
	int client_fd=socket(AF_INET,SOCK_STREAM,0);
	if(client_fd<0)
	{
		printf("TCP客戶端:創建套接字創建失敗!\n");
		return -1;
	}
	
	/*2. 連接服務器*/
	struct sockaddr_in server_addr;
	memset(&server_addr,0,sizeof(struct sockaddr_in));
	server_addr.sin_family=AF_INET; //IPV4
	server_addr.sin_port=htons(PORT); //需要填大端格式的端口號數據
	server_addr.sin_addr.s_addr=inet_addr(argv[1]);
	
	if(connect(client_fd,(const struct sockaddr *)&server_addr,sizeof(struct sockaddr_in))!=0)
	{
		printf("連接服務器失敗!\n");
		return -2;
	}
	
	/*3. 數據的通信*/
	char buff[100];
	int cnt=read(client_fd,buff,100);
	printf("接收的數據:%d,%s\n",cnt,buff);
	
	/*4. 關閉服務器套接字*/
	close(client_fd);
	return 0;
}

UDP接收端:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include           /* See NOTES */
#include 
#include 
#include  /* superset of previous */

#define PORT 1234

/*
UDP服務器創建:
1. 創建socket套接字
2. 綁定端口號: 服務器創建
3. 等待接收數據
*/

int main(int argc,char **argv)
{
	/*1. 創建套接字*/
	int server_fd=socket(AF_INET,SOCK_DGRAM,0);
	if(server_fd<0)
	{
		printf("UDP服務器:創建套接字創建失敗!\n");
		return -1;
	}
	
	/*2. 綁定端口號*/
	struct sockaddr_in server_addr;
	memset(&server_addr,0,sizeof(struct sockaddr_in));
	server_addr.sin_family=AF_INET; //IPV4
	server_addr.sin_port=htons(PORT); //需要填大端格式的端口號數據
	server_addr.sin_addr.s_addr=0;//inet_addr("192.168.18.3");
	/*0=inet_addr("0.0.0.0") ---表示本地所有IP地址*/
	if(bind(server_fd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr_in))!=0)
	{
		printf("UDP服務器:綁定端口號失敗!\n");
		return -2;
	}
	
	/*3. 等待數據接收*/
	char buff[1024];
	struct sockaddr_in client_addr;
	int addrlen=sizeof(struct sockaddr_in);
	int recv_len;
	while(1)
	{
		//阻塞方式接收客戶端發來的數據
		recv_len=recvfrom(server_fd,buff,1024,0,(struct sockaddr *)&client_addr,&addrlen);
		printf("RX=%d,%s\n",recv_len,buff);
		//printf();
	}
	/*4. 關閉服務器套接字*/
	close(server_fd);
	return 0;
}

UDP發送端:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include           /* See NOTES */
#include 
#include 
#include  /* superset of previous */

#define PORT 1234

/*
TDP客戶端:
1. 創建socket套接字
2. 向指定地址發送數據
*/
int main(int argc,char **argv)
{
	if(argc!=2)
	{
		printf("./app server_ip\n");
		return 0;
	}
	/*1. 創建套接字*/
	int client_fd=socket(AF_INET,SOCK_DGRAM,0);
	if(client_fd<0)
	{
		printf("TCP客戶端:創建套接字創建失敗!\n");
		return -1;
	}
	
	/*2. 向UDP服務器發送數據*/
	char buff[]="1234567890";
	int send_len;
	struct sockaddr_in server_addr;
	memset(&server_addr,0,sizeof(struct sockaddr_in));
	server_addr.sin_family=AF_INET; //IPV4
	server_addr.sin_port=htons(PORT); //需要填大端格式的端口號數據
	server_addr.sin_addr.s_addr=inet_addr(argv[1]);
	
	while(1)
	{
		//向服務器發送數據
		send_len=sendto(client_fd,buff,strlen(buff)+1,0,(const struct sockaddr *)&server_addr,sizeof(struct sockaddr_in));
		printf("TX:%d,%s\n",send_len,buff);
		sleep(1);
	}
	
	/*3. 關閉客戶端套接字*/
	close(client_fd);
	return 0;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1378

    瀏覽量

    79304
  • UDP
    UDP
    +關注

    關注

    0

    文章

    327

    瀏覽量

    34045
  • 網絡通信
    +關注

    關注

    4

    文章

    814

    瀏覽量

    29948
  • 網絡編程
    +關注

    關注

    0

    文章

    72

    瀏覽量

    10101
收藏 人收藏

    評論

    相關推薦

    TCP協議在網絡通信中的應用

    在當今數字化時代,網絡通信已經成為我們日常生活和工作中不可或缺的一部分。TCP協議作為網絡通信的基石,確保了數據能夠在不同設備之間可靠地傳輸。 一、TCP協議的工作原理 TCP是一種面向連接的、可靠
    的頭像 發表于 01-22 09:50 ?112次閱讀

    全志T113-S3開發網絡通信

    前言:在使用開發板的過程中經常會使用到ssh、ftp等網絡服務,這時需要使用開發板的網絡功能。因此新拿到的開發板要先進行
    的頭像 發表于 12-26 08:32 ?459次閱讀
    全志T113-S3<b class='flag-5'>開發</b>板<b class='flag-5'>網絡通信</b>

    百問FB網絡編程 - 網絡編程簡介

    6.1 網絡編程簡介 ?要編寫通過計算機網絡通信的程序,首先要確定這些程序同通信的協議(protocol),在設計一個協議的細節之前,首先要分清程序是由哪個程序發起以及響應何時產生。
    發表于 12-04 09:46

    脈沖編碼調制在網絡通信中的應用

    脈沖編碼調制(Pulse Code Modulation,PCM)在網絡通信中的應用十分廣泛,其作為一種數字信號處理技術,能夠將模擬信號轉換成數字信號,以便在數字通信系統中傳輸和處理。以下是PCM
    的頭像 發表于 11-26 09:57 ?758次閱讀

    socket 網絡通信協議解析

    在現代計算機科學中,網絡通信是信息交換的核心。Socket(套接字)是網絡通信中一個至關重要的概念,它提供了一種抽象層,使得程序能夠發送和接收數據。 1. Socket的基本概念 Socket是一種
    的頭像 發表于 11-12 14:04 ?899次閱讀

    Linux網絡基礎知識總結

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

    Linux網絡協議棧的實現

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

    YXC可編程晶振,頻點156.25MHZ,3225封裝,適用與AI網絡通信設備

    隨著技術的發展,數據傳輸速率越來越高,晶振的頻率可以根據需要進行調整,以適應不同的數據傳輸速率,YSO690PR系列的特點是可編程,1-200MHz頻率任意編程,并精確輸出到小數點后6位,優化系統性能,晶振的穩定性有助于優化AI網絡通信
    的頭像 發表于 08-08 15:41 ?461次閱讀
    YXC可<b class='flag-5'>編程</b>晶振,頻點156.25MHZ,3225封裝,適用與AI<b class='flag-5'>網絡通信</b>設備

    探索光耦技術在5G網絡通信的創新應用

    5G網絡通信經過多年的高速發展,仍有一些技術痛點未能解決,其技術痛點主要包括網絡覆蓋范圍與信號質量、高頻段通信與設備兼容性、關鍵技術不夠成熟以及核心器件依賴進口等方面。光耦技術在解決這些5G
    的頭像 發表于 06-26 09:31 ?615次閱讀
    探索光耦技術在5G<b class='flag-5'>網絡通信</b>的創新應用

    一個沒有mesh協議的ble設備,如何通過gatt協議與mesh網絡通信

    一個沒有mesh協議的ble設備,如何通過gatt協議與mesh網絡通信,代理節點需要調用需要調用那些接口進行轉換。mesh網絡中的代理節點如何轉換gatt服務的消息的。ESP-IDF是否有提供相應的demo。
    發表于 06-24 07:52

    SDWAN技術是否會增加網絡安全風險?SD-WAN如何確保網絡通信的安全性?

    SDWAN技術是否會增加網絡安全風險?SD-WAN如何確保網絡通信的安全性? SDWAN技術的廣泛應用為企業網絡帶來了更大的靈活性和可擴展性,但同時也帶來了一些安全風險。在談論SDWAN如何確保
    的頭像 發表于 03-27 16:57 ?1056次閱讀

    Linux網絡編程

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

    鴻蒙開發實戰:【網絡管理-Socket連接】

    Socket在網絡通信方面的應用,展示了Socket在兩端設備的連接驗證、聊天通信方面的應用。
    的頭像 發表于 03-19 22:04 ?953次閱讀
    鴻蒙<b class='flag-5'>開發</b>實戰:【<b class='flag-5'>網絡</b>管理-Socket連接】

    時鐘同步系統在網絡通信中的重要性及優勢

    時鐘同步是指多個設備或系統之間的時間保持一致。在網絡通信中,時鐘同步系統至關重要,它可以確保網絡通信的準確性和可靠性。 時鐘同步系統在網絡通信中的重要性 保證數據傳輸的準確性 在網絡通信
    的頭像 發表于 03-19 10:35 ?1402次閱讀
    時鐘同步系統在<b class='flag-5'>網絡通信</b>中的重要性及優勢

    5G網絡通信有哪些技術痛點?光耦技術在5G網絡通信的應用

    5G網絡通信有哪些技術痛點?光耦技術在5G網絡通信的應用? 5G網絡通信的技術痛點: 1. 頻譜資源短缺:5G通信需要更高的頻譜資源來支持更大的數據傳輸量和更高的速度,但是目前無線
    的頭像 發表于 02-18 17:13 ?1059次閱讀
    主站蜘蛛池模板: 天天干夜夜夜操 | 亚洲伦理一区 | 97伊人久久| 在线观看黄色的网站 | 亚洲一区免费 | 美人岛福利 | 视频网站免费看 | 免费精品美女久久久久久久久 | 五月婷婷之婷婷 | 天天操国产 | 分分操免费视频在线观看 | 色婷婷色婷婷 | 高清色| 免费xxxx大片| 色中色官网| 亚洲vv| 亚洲韩国日本欧美一区二区三区 | 美女视频黄又黄又免费高清 | 美女被艹视频网站 | 久久久久久午夜精品 | 婷婷综合久久 | 一区二区三区四区无限乱码在线观看 | 操操操操网 | 男校霸把男校草玩出水男男 | 男女交性视频免费 | 黄色大片视频 | 在线播放网址 | 影音先锋色天使 | 奇米色影院| 久久国产午夜精品理论片34页 | 亚综合 | 欧美黑人巨大xxx猛交 | 2021国产精品午夜久久 | 天堂资源吧 | 丁香五香天堂网卡 | 日韩激情淫片免费看 | 速度与激情一 | 你懂的网站在线观看 | 日韩毛片在线 | 韩国电影天堂 | 国产黄色的视频 |