chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

Linux開發(fā)_網(wǎng)絡(luò)編程、網(wǎng)絡(luò)通信介紹

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

掃碼添加小助手

加入工程師交流群

【摘要】 介紹Linux網(wǎng)絡(luò)編程: TCP網(wǎng)絡(luò)編程、UDP網(wǎng)絡(luò)編程案例,完成數(shù)據(jù)互相發(fā)送。

任務(wù)1: 網(wǎng)頁視頻監(jiān)控

1.?學(xué)習(xí)網(wǎng)絡(luò)編程

2.?USB攝像頭

3.?HTTP協(xié)議: 搭建HTTP服務(wù)器。

??網(wǎng)絡(luò)編程------TCP/IP協(xié)議編程----一套軟件協(xié)議----->數(shù)據(jù)結(jié)構(gòu)。

pYYBAGMlOyeAVTNnAACXA9IWko0152.png

??網(wǎng)絡(luò)編程底層協(xié)議: (從網(wǎng)絡(luò)收發(fā)一個(gè)字節(jié))

1.?TCP協(xié)議(C/S): 點(diǎn)對(duì)點(diǎn)傳輸協(xié)議。數(shù)據(jù)傳輸可靠的。 適合傳輸大數(shù)據(jù)。

2.?UDP協(xié)議: 廣播方式傳輸協(xié)議 (對(duì)特定端口號(hào)進(jìn)行廣播)。數(shù)據(jù)相對(duì)TCP不可靠的。---不適合傳輸大數(shù)據(jù),傳輸小塊數(shù)據(jù)。

??網(wǎng)絡(luò)編程的上層協(xié)議:

1.?HTTP協(xié)議: 超文本傳輸協(xié)議----網(wǎng)絡(luò)使用。

2.?FTP協(xié)議: 文件傳輸協(xié)議---傳輸單文件。

3.?NFS協(xié)議: 文件傳輸協(xié)議----網(wǎng)絡(luò)文件系統(tǒng)。

??TCP協(xié)議編程:

1.?服務(wù)器: 等待客戶端連接。

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

poYBAGMlOyiAJKi8AAFwdCAi0iI791.pngpYYBAGMlOyiAPsWwAAEDiYXYfuo021.pngpoYBAGMlOyiAfnHpAAEK8xZpK1g676.png

網(wǎng)絡(luò)協(xié)議: 大端模式。

計(jì)算機(jī)IPV4的端口號(hào)范圍: 0~65535 。自己編寫的程序端口號(hào): >1024

TCP服務(wù)器:

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

#define PORT 1234

/*
TCP服務(wù)器創(chuàng)建:
1. 創(chuàng)建socket套接字
2. 綁定端口號(hào): 服務(wù)器創(chuàng)建
3. 設(shè)置監(jiān)聽端口的數(shù)量: 服務(wù)器最大等待連接的客戶端總數(shù)量
4. 等待客戶端連接
*/
int main(int argc,char **argv)
{
	/*1. 創(chuàng)建套接字*/
	int server_fd=socket(AF_INET,SOCK_STREAM,0);
	if(server_fd<0)
	{
		printf("TCP服務(wù)器:創(chuàng)建套接字創(chuàng)建失敗!\n");
		return -1;
	}
	
	/*2. 綁定端口號(hào)*/
	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); //需要填大端格式的端口號(hào)數(shù)據(jù)
	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服務(wù)器:綁定端口號(hào)失敗!\n");
		return -2;
	}
	printf("struct sockaddr_in=%d\n",sizeof(struct sockaddr_in)); //16
	printf("struct sockaddr=%d\n",sizeof(struct sockaddr)); //16
	
	/*3. 設(shè)置監(jiān)聽客戶端連接的數(shù)量*/
	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("服務(wù)器提示:等待客戶端連接出現(xiàn)錯(cuò)誤!\n");
		return 0;
	}
	
	/*5. 數(shù)據(jù)的通信*/
	char buff[]="1234567890";
	int cnt=write(client_fd,buff,strlen(buff)+1);
	printf("發(fā)送:%d,%s\n",cnt,buff);
	/*6. 關(guān)閉服務(wù)器套接字*/
	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. 創(chuàng)建socket套接字
2. 連接指定TCP服務(wù)器
*/
int main(int argc,char **argv)
{
	if(argc!=2)
	{
		printf("./app server_ip\n");
		return 0;
	}
	/*1. 創(chuàng)建套接字*/
	int client_fd=socket(AF_INET,SOCK_STREAM,0);
	if(client_fd<0)
	{
		printf("TCP客戶端:創(chuàng)建套接字創(chuàng)建失敗!\n");
		return -1;
	}
	
	/*2. 連接服務(wù)器*/
	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); //需要填大端格式的端口號(hào)數(shù)據(jù)
	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("連接服務(wù)器失敗!\n");
		return -2;
	}
	
	/*3. 數(shù)據(jù)的通信*/
	char buff[100];
	int cnt=read(client_fd,buff,100);
	printf("接收的數(shù)據(jù):%d,%s\n",cnt,buff);
	
	/*4. 關(guān)閉服務(wù)器套接字*/
	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服務(wù)器創(chuàng)建:
1. 創(chuàng)建socket套接字
2. 綁定端口號(hào): 服務(wù)器創(chuàng)建
3. 等待接收數(shù)據(jù)
*/

int main(int argc,char **argv)
{
	/*1. 創(chuàng)建套接字*/
	int server_fd=socket(AF_INET,SOCK_DGRAM,0);
	if(server_fd<0)
	{
		printf("UDP服務(wù)器:創(chuàng)建套接字創(chuàng)建失敗!\n");
		return -1;
	}
	
	/*2. 綁定端口號(hào)*/
	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); //需要填大端格式的端口號(hào)數(shù)據(jù)
	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服務(wù)器:綁定端口號(hào)失敗!\n");
		return -2;
	}
	
	/*3. 等待數(shù)據(jù)接收*/
	char buff[1024];
	struct sockaddr_in client_addr;
	int addrlen=sizeof(struct sockaddr_in);
	int recv_len;
	while(1)
	{
		//阻塞方式接收客戶端發(fā)來的數(shù)據(jù)
		recv_len=recvfrom(server_fd,buff,1024,0,(struct sockaddr *)&client_addr,&addrlen);
		printf("RX=%d,%s\n",recv_len,buff);
		//printf();
	}
	/*4. 關(guān)閉服務(wù)器套接字*/
	close(server_fd);
	return 0;
}

UDP發(fā)送端:

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

#define PORT 1234

/*
TDP客戶端:
1. 創(chuàng)建socket套接字
2. 向指定地址發(fā)送數(shù)據(jù)
*/
int main(int argc,char **argv)
{
	if(argc!=2)
	{
		printf("./app server_ip\n");
		return 0;
	}
	/*1. 創(chuàng)建套接字*/
	int client_fd=socket(AF_INET,SOCK_DGRAM,0);
	if(client_fd<0)
	{
		printf("TCP客戶端:創(chuàng)建套接字創(chuàng)建失敗!\n");
		return -1;
	}
	
	/*2. 向UDP服務(wù)器發(fā)送數(shù)據(jù)*/
	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); //需要填大端格式的端口號(hào)數(shù)據(jù)
	server_addr.sin_addr.s_addr=inet_addr(argv[1]);
	
	while(1)
	{
		//向服務(wù)器發(fā)送數(shù)據(jù)
		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. 關(guān)閉客戶端套接字*/
	close(client_fd);
	return 0;
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1413

    瀏覽量

    82602
  • UDP
    UDP
    +關(guān)注

    關(guān)注

    0

    文章

    331

    瀏覽量

    35060
  • 網(wǎng)絡(luò)通信
    +關(guān)注

    關(guān)注

    4

    文章

    828

    瀏覽量

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

    關(guān)注

    0

    文章

    72

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    網(wǎng)段隔離器實(shí)現(xiàn)靜態(tài)NAT網(wǎng)絡(luò)通信

    在許多網(wǎng)絡(luò)場(chǎng)景中,不同網(wǎng)段之間需要進(jìn)行通信,但又要保證各網(wǎng)段的相對(duì)獨(dú)立性和安全性。如果缺少網(wǎng)絡(luò)規(guī)劃與網(wǎng)段隔離,會(huì)使網(wǎng)絡(luò)面臨巨大的安全風(fēng)險(xiǎn),各類網(wǎng)絡(luò)
    的頭像 發(fā)表于 08-16 13:44 ?468次閱讀

    【嘉楠堪智K230開發(fā)板試用體驗(yàn)】網(wǎng)絡(luò)收發(fā)信息

    本次實(shí)驗(yàn)通過在 K230 上實(shí)現(xiàn)基于 Socket 的 TCP 客戶端通信,成功與電腦服務(wù)器建立連接并實(shí)現(xiàn)數(shù)據(jù)收發(fā)。掌握了 Socket 編程的基本流程,加深了對(duì) TCP/IP 協(xié)議和網(wǎng)絡(luò)通信機(jī)制的理解,為后續(xù)
    發(fā)表于 07-13 08:13

    基于RK3576開發(fā)板的以太網(wǎng)口網(wǎng)絡(luò)通信

    本文著重介紹如何通過配置文件配合命令行來修改網(wǎng)絡(luò)參數(shù),以及如何通過程序來修改配置文件。若用戶僅想了解如何【通過桌面窗口】配置網(wǎng)絡(luò),或者想知道【為什么】debian系統(tǒng)采用NetworkManager這種方式配置
    的頭像 發(fā)表于 05-06 11:43 ?628次閱讀
    基于RK3576<b class='flag-5'>開發(fā)</b>板的以太網(wǎng)口<b class='flag-5'>網(wǎng)絡(luò)通信</b>

    愛普生SG3225EEN低抖動(dòng)差分晶振在網(wǎng)絡(luò)通信的應(yīng)用

    在當(dāng)今數(shù)字化時(shí)代,網(wǎng)絡(luò)通信的飛速發(fā)展對(duì)數(shù)據(jù)傳輸?shù)臏?zhǔn)確性、穩(wěn)定性和高效性提出了極為嚴(yán)苛的要求。從5G通信網(wǎng)絡(luò)的大規(guī)模部署,到數(shù)據(jù)中心的海量數(shù)據(jù)交換,再到智能家居系統(tǒng)的互聯(lián)互通,每一個(gè)環(huán)節(jié)都離不開精準(zhǔn)
    的頭像 發(fā)表于 04-15 11:28 ?477次閱讀
    愛普生SG3225EEN低抖動(dòng)差分晶振在<b class='flag-5'>網(wǎng)絡(luò)通信</b>的應(yīng)用

    智多晶LWIP網(wǎng)絡(luò)通信系統(tǒng)介紹

    在物聯(lián)網(wǎng)蓬勃興起的當(dāng)下,嵌入式設(shè)備的網(wǎng)絡(luò)通信能力如同為其插上了騰飛的翅膀,使其能夠自由穿梭于信息的浩瀚海洋。而 LWIP,宛如一位身姿矯健的輕騎兵,在資源有限的嵌入式系統(tǒng)中飛馳,輕松完成各種復(fù)雜的網(wǎng)絡(luò)通信任務(wù)。西安智多晶微電子有限公司的LWIP
    的頭像 發(fā)表于 04-10 16:27 ?1329次閱讀
    智多晶LWIP<b class='flag-5'>網(wǎng)絡(luò)通信</b>系統(tǒng)<b class='flag-5'>介紹</b>

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

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

    雷卯收集網(wǎng)絡(luò)通信開發(fā)

    。 雷卯收集網(wǎng)絡(luò)通信開發(fā)板明細(xì)如下: ? ? ? 以下是網(wǎng)絡(luò)通信開發(fā)介紹網(wǎng)絡(luò)通信是通過互聯(lián)
    的頭像 發(fā)表于 04-07 20:09 ?395次閱讀
    雷卯收集<b class='flag-5'>網(wǎng)絡(luò)通信</b><b class='flag-5'>開發(fā)</b>板

    800G光模塊:引領(lǐng)未來數(shù)據(jù)中心與網(wǎng)絡(luò)通信的新引擎

    5G、云計(jì)算等技術(shù)發(fā)展推動(dòng)全球數(shù)據(jù)流量增長,800G光模塊作為高速光通信核心組件,具有卓越傳輸速率、低功耗、高端口密度優(yōu)勢(shì),應(yīng)用于數(shù)據(jù)中心、5G網(wǎng)絡(luò)、AI及高性能計(jì)算,重塑網(wǎng)絡(luò)通信格局。
    的頭像 發(fā)表于 02-07 11:13 ?1057次閱讀

    TCP協(xié)議在網(wǎng)絡(luò)通信中的應(yīng)用

    在當(dāng)今數(shù)字化時(shí)代,網(wǎng)絡(luò)通信已經(jīng)成為我們?nèi)粘I詈凸ぷ髦胁豢苫蛉钡囊徊糠?。TCP協(xié)議作為網(wǎng)絡(luò)通信的基石,確保了數(shù)據(jù)能夠在不同設(shè)備之間可靠地傳輸。 一、TCP協(xié)議的工作原理 TCP是一種面向連接的、可靠
    的頭像 發(fā)表于 01-22 09:50 ?963次閱讀

    全志T113-S3開發(fā)網(wǎng)絡(luò)通信

    前言:在使用開發(fā)板的過程中經(jīng)常會(huì)使用到ssh、ftp等網(wǎng)絡(luò)服務(wù),這時(shí)需要使用開發(fā)板的網(wǎng)絡(luò)功能。因此新拿到的開發(fā)板要先進(jìn)行
    的頭像 發(fā)表于 12-26 08:32 ?1710次閱讀
    全志T113-S3<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>網(wǎng)絡(luò)通信</b>

    快速測(cè)試RK3588網(wǎng)絡(luò)通信能力

    前言:本期我們將進(jìn)一步探討網(wǎng)絡(luò)功能的調(diào)試方法,涵蓋網(wǎng)絡(luò)測(cè)試、4G/5G測(cè)試和WiFi測(cè)試。這些測(cè)試將幫助您全面評(píng)估開發(fā)板的網(wǎng)絡(luò)連接性能,確保各項(xiàng)無線
    的頭像 發(fā)表于 12-19 08:33 ?2922次閱讀
    快速測(cè)試RK3588<b class='flag-5'>網(wǎng)絡(luò)通信</b>能力

    百問FB網(wǎng)絡(luò)編程 - 網(wǎng)絡(luò)編程簡(jiǎn)介

    6.1 網(wǎng)絡(luò)編程簡(jiǎn)介 ?要編寫通過計(jì)算機(jī)網(wǎng)絡(luò)通信的程序,首先要確定這些程序同通信的協(xié)議(protocol),在設(shè)計(jì)一個(gè)協(xié)議的細(xì)節(jié)之前,首先要分清程序是由哪個(gè)程序發(fā)起以及響應(yīng)何時(shí)產(chǎn)生。
    發(fā)表于 12-04 09:46

    脈沖編碼調(diào)制在網(wǎng)絡(luò)通信中的應(yīng)用

    脈沖編碼調(diào)制(Pulse Code Modulation,PCM)在網(wǎng)絡(luò)通信中的應(yīng)用十分廣泛,其作為一種數(shù)字信號(hào)處理技術(shù),能夠?qū)⒛M信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),以便在數(shù)字通信系統(tǒng)中傳輸和處理。以下是PCM
    的頭像 發(fā)表于 11-26 09:57 ?2013次閱讀

    socket 網(wǎng)絡(luò)通信協(xié)議解析

    在現(xiàn)代計(jì)算機(jī)科學(xué)中,網(wǎng)絡(luò)通信是信息交換的核心。Socket(套接字)是網(wǎng)絡(luò)通信中一個(gè)至關(guān)重要的概念,它提供了一種抽象層,使得程序能夠發(fā)送和接收數(shù)據(jù)。 1. Socket的基本概念 Socket是一種
    的頭像 發(fā)表于 11-12 14:04 ?6337次閱讀

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

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