国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

UDP服務(wù)端和客戶端通信代碼開發(fā)流程

這篇具有很好參考價值的文章主要介紹了UDP服務(wù)端和客戶端通信代碼開發(fā)流程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、UDP通信

TCP:傳輸控制協(xié)議,面向連接的,穩(wěn)定的,可靠的,安全的數(shù)據(jù)集流傳遞

穩(wěn)定和可靠:丟包重傳

數(shù)據(jù)有序:序號和確認序號

流量控制:穩(wěn)定窗口

UDP:用戶數(shù)據(jù)報協(xié)議

面向無連接的,不穩(wěn)定的,不可靠,不安全的數(shù)據(jù)報傳遞=---更像是收發(fā)短信,UDP傳輸不需要建立連接,傳輸效率更高,在穩(wěn)定的局域網(wǎng)內(nèi)部環(huán)境相對可靠

UDP通信相關(guān)函數(shù)介紹

接收信息函數(shù)

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,

結(jié)構(gòu) sockaddr *src_addr, socklen_t *addrlen);

函數(shù)說明: 接收消息

參數(shù)說明:

sockfd 套接字

buf 要接受的緩沖區(qū)

len 緩沖區(qū)的長度

flags 標志位 一般填0

src_addr 原地址 傳出參數(shù)

addrlen 發(fā)送方地址長度

返回值

成功: 返回讀到的字節(jié)數(shù)

失?。?返回 -1 設(shè)置errno

調(diào)用該函數(shù)相當于TCP通信的recv+accept函數(shù)

發(fā)送數(shù)據(jù)函數(shù)

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,

const struct sockaddr *dest_addr, socklen_t addrlen);

函數(shù)說明: 發(fā)送數(shù)據(jù)

參數(shù)說明:

sockfd 套接字

dest_addr 目的地址

addrlen 目的地址長度

返回值

成功: 返回寫入的字節(jié)數(shù)

失敗: 返回-1,設(shè)置errno

UDP服務(wù)端和客戶端通信代碼開發(fā)流程,udp,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

二、UDP服務(wù)端和客戶端開發(fā)流程

1.服務(wù)端開發(fā)流程

(1) 創(chuàng)建socket (man 7 udp)

udp_socket = 套接字(AF_INET,SOCK_DGRAM,0);

SOCK_DGRAM:面向無連接,不安全,不可靠,的數(shù)據(jù)報傳輸

(2) 綁定-綁定

(3) 而 (1)

{

讀取數(shù)據(jù)

n = recvfrom(cfd,buf,sizeof(buf),0,(struct sockaddr *) &client,&len);

發(fā)送數(shù)據(jù)

sendto(cfd,buf,n,0,(struct sockaddr *)&client,len);

}

(4)//關(guān)閉文件描述符

平倉(CFD)

2.客戶端開發(fā)流程

(1) 創(chuàng)建socket (man 7 udp)

udp_socket = 套接字(AF_INET,SOCK_DGRAM,0);

(2) 而 (1)

? ? ?{

? ? ? ? ? ? ? //發(fā)送數(shù)據(jù)

? ? ? ? ? ? ? sendto(cfd,buf,n,0,(struct sockaddr *) &client,&len);

? ? ? ? ? ? ? //讀取數(shù)據(jù)

? ? ? ? ? ? ??n = recvfrom(cfd,buf,sizeof(buf),0,(struct sockaddr *) &client,&len);

? ? ? }

(3)關(guān)閉socket套接字

close(cfd)

三、客戶端和服務(wù)端代碼開發(fā)案例

1.UDP服務(wù)端代碼開發(fā)

代碼

//udp服務(wù)端
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <ctype.h>

int main()
{
	int cfd = socket(AF_INET,SOCK_DGRAM,0);
	if(cfd < 0)
	{
		perror("sock error");
		return -1;
	}
	
	struct sockaddr_in serv;
	struct sockaddr_in client;
	bzero(&serv,sizeof(serv));
	serv.sin_family = AF_INET;
	serv.sin_port = htons(8888);
	serv.sin_addr.s_addr = htonl(INADDR_ANY);
	bind(cfd,(struct sockaddr *)&serv,sizeof(serv));
	
	int i;
	int n;
	socklen_t len;
	char buf[1024];
	
	while(1)
	{
		memset(buf,0x00,sizeof(buf));
		len = sizeof(client);
		n = recvfrom(cfd, buf,sizeof(buf),0,(struct sockaddr *)&client,&len);
		
		for(i = 0;i < n;i ++)
		{
			buf[i] = toupper(buf[i]);
		}
		
		printf("[%d]: n == [%d],buf == [%s]\n",ntohs(client.sin_port),n,buf);
		sendto(cfd, buf,n,0,(struct sockaddr *)&client,len);
	}
    close(cfd);
    return 0;
}

效果展示

運行服務(wù)端

UDP服務(wù)端和客戶端通信代碼開發(fā)流程,udp,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

?使用nc -u 127.1 8888 進行連接到服務(wù)端UDP服務(wù)端和客戶端通信代碼開發(fā)流程,udp,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

?所有網(wǎng)絡(luò)連接和進程的命令,并過濾結(jié)果以僅顯示與端口8888相關(guān)的連接或進程

UDP服務(wù)端和客戶端通信代碼開發(fā)流程,udp,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

2.UDP客戶端代碼開發(fā)

代碼

//udp服務(wù)端
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <ctype.h>
 
int main()
{
    //創(chuàng)建socket
    int cfd = socket(AF_INET, SOCK_DGRAM, 0);
    if(cfd<0)
    {
        perror("socket error");
        return -1;
    }
 
    //綁定
    struct sockaddr_in serv;
    serv.sin_family = AF_INET;
    serv.sin_port = htons(8888);
    inet_pton(AF_INET, "127.0.0.1", &serv.sin_addr.s_addr);
 
    int n;

    char buf[1024];
    while(1)
    {
        //讀取標準輸入 
        memset(buf, 0x00, sizeof(buf));
        n  = read(STDIN_FILENO,buf,sizeof(buf));
        
        //發(fā)送數(shù)據(jù)
        sendto(cfd, buf, n, 0, (struct sockaddr *)&serv, sizeof(serv));
        
        
        //讀取數(shù)據(jù)
        memset(buf, 0x00, sizeof(buf));
        n = recvfrom(cfd, buf, sizeof(buf), 0, NULL, NULL);
        printf("n==[%d], buf==[%s]\n", n, buf);
        
    }
 
    //關(guān)閉套接字
    close(cfd);
 
    return 0;
}

運行結(jié)果

UDP服務(wù)端和客戶端通信代碼開發(fā)流程,udp,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)文章來源地址http://www.zghlxwxcb.cn/news/detail-742325.html

到了這里,關(guān)于UDP服務(wù)端和客戶端通信代碼開發(fā)流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Qt專欄】Qt實現(xiàn)TCP服務(wù)端和客戶端通信

    【Qt專欄】Qt實現(xiàn)TCP服務(wù)端和客戶端通信

    網(wǎng)絡(luò)通信是程序員必須會的一項生存技能,這里簡單的實現(xiàn)了服務(wù)端和客戶端通信的兩個小示例,代碼可以直接拿來用,開發(fā)環(huán)境是Qt5.9.6。 1.項目架構(gòu) 2.tcpserver.h文件 3.tcpserver.cpp文件 4.測試效果 1.項目架構(gòu) 2.tcpserver.h文件 3.tcpserver.cpp文件 4.測試效果 好了,兩個小程序?qū)懲瓴?/p>

    2024年02月12日
    瀏覽(21)
  • C# Socket通信從入門到精通(16)——單個同步UDP服務(wù)器監(jiān)聽多個客戶端C#代碼實現(xiàn)

    C# Socket通信從入門到精通(16)——單個同步UDP服務(wù)器監(jiān)聽多個客戶端C#代碼實現(xiàn)

    我們在開發(fā)UDP通信程序時,有時候我們也需要開發(fā)UDP服務(wù)器程序,這個服務(wù)器只需要和一個客戶端實現(xiàn)通信,比如這篇博文C# Socket通信從入門到精通(15)——單個同步UDP服務(wù)器監(jiān)聽一個客戶端C#代碼實現(xiàn),但是在實際項目中有的時候需要和多個客戶端進行通信,這時和一個客

    2024年01月22日
    瀏覽(97)
  • C# Socket通信從入門到精通(15)——單個同步UDP服務(wù)器監(jiān)聽一個客戶端C#代碼實現(xiàn)

    C# Socket通信從入門到精通(15)——單個同步UDP服務(wù)器監(jiān)聽一個客戶端C#代碼實現(xiàn)

    我們在開發(fā)UDP通信程序時,除了開發(fā)UDP客戶端程序,有時候我們也需要開發(fā)UDP服務(wù)器程序,這在實際項目中是經(jīng)常會遇到的,所以說掌握UDP服務(wù)器程序的開發(fā)是一項必備的技能,尤其在上位機軟件開發(fā)領(lǐng)域,掌握UDP服務(wù)器程序的開發(fā)是走向高級工程師的必經(jīng)之路,也是面試必

    2024年02月03日
    瀏覽(94)
  • (二) 用QWebSocket 實現(xiàn)服務(wù)端和客戶端(詳細代碼直接使用)

    目錄 前言 一、服務(wù)器的代碼: 1、服務(wù)器的思路 2、具體服務(wù)器的代碼示例 二、客戶端的代碼: 1、客戶端的思路(和服務(wù)器類似) 2、具體客戶端的代碼示例 前言 ????????要是想了解QWebSocket的詳細知識,還得移步到上一篇文章: WebSocket 詳解,以及用QWebSocket 實現(xiàn)服務(wù)端

    2024年01月20日
    瀏覽(24)
  • WebSocket 詳解,以及用QWebSocket 實現(xiàn)服務(wù)端和客戶端(含代碼例子)

    WebSocket 詳解,以及用QWebSocket 實現(xiàn)服務(wù)端和客戶端(含代碼例子)

    目錄 前言: 1、WebSocket 誕生背景 2、WebSocket的特點: 3、 WebSocket 簡介 4、WebSocket 優(yōu)點 5、QWebSocket通訊—客戶端: 6、QWebSocket通訊—服務(wù)端: 前言: ????????要是對WebSocket 的基本知識都了解了,可以直接移步,實際如何使用這個類 (二) 用QWebSocket 實現(xiàn)服務(wù)端和客戶端(

    2024年02月16日
    瀏覽(53)
  • (一)WebSocket 詳解,以及用QWebSocket 實現(xiàn)服務(wù)端和客戶端(含代碼例子)

    (一)WebSocket 詳解,以及用QWebSocket 實現(xiàn)服務(wù)端和客戶端(含代碼例子)

    目錄 前言: 1、WebSocket 誕生背景 2、WebSocket的特點: 3、 WebSocket 簡介 4、WebSocket 優(yōu)點 5、QWebSocket通訊—客戶端: 6、QWebSocket通訊—服務(wù)端: 前言: ????????要是對WebSocket 的基本知識都了解了,可以直接移步,實際如何使用這個類 (二) 用QWebSocket 實現(xiàn)服務(wù)端和客戶端(

    2024年02月03日
    瀏覽(23)
  • Unity-UDP-客戶端/服務(wù)器通信功能

    Unity-UDP-客戶端/服務(wù)器通信功能

    這里簡單實現(xiàn)客戶端和服務(wù)器,復雜的實現(xiàn)需要和前幾篇文章的TCP一樣,管理多個鏈接過來的客戶端,這里只有一個。需要自己封裝類似listener來管理多個鏈接過來的設(shè)備,每次都緩存ReceiveAsync收到消息的中的RemoteEndPoint地址端口,統(tǒng)一管理發(fā)送接收消息。 https://zhidao.baidu.c

    2024年02月11日
    瀏覽(34)
  • 服務(wù)器端使用django websocket,客戶端使用uniapp 請問服務(wù)端和客戶端群組互發(fā)消息的代碼怎么寫的參考筆記

    服務(wù)器端使用django websocket,客戶端使用uniapp 請問服務(wù)端和客戶端群組互發(fā)消息的代碼怎么寫的參考筆記

    2023/8/29 19:21:11 服務(wù)器端使用django websocket,客戶端使用uniapp 請問服務(wù)端和客戶端群組互發(fā)消息的代碼怎么寫 2023/8/29 19:22:25 在服務(wù)器端使用Django WebSocket和客戶端使用Uniapp的情況下,以下是代碼示例來實現(xiàn)服務(wù)器端和客戶端之間的群組互發(fā)消息。 服務(wù)器端代碼 (使用Django Chann

    2024年02月11日
    瀏覽(22)
  • 【網(wǎng)絡(luò)原理】使用Java基于UDP實現(xiàn)簡單客戶端與服務(wù)器通信

    【網(wǎng)絡(luò)原理】使用Java基于UDP實現(xiàn)簡單客戶端與服務(wù)器通信

    我們用Java實現(xiàn)UDP數(shù)據(jù)報套接字編程,需要借用以下API來實現(xiàn) 網(wǎng)絡(luò)編程, 本質(zhì)上是要操作網(wǎng)卡. 但是網(wǎng)卡不方便直接操作. 在操作系統(tǒng)內(nèi)核中, 使用了一種特殊的叫做 “socket” 這樣的文件來抽象表示網(wǎng)卡. 因此進行網(wǎng)絡(luò)通信, 勢必需要先有一個 socket 對象. DatagramSocket 是UDP Socket,

    2024年03月11日
    瀏覽(26)
  • C# Socket通信從入門到精通(12)——多個同步UDP客戶端C#代碼實現(xiàn)

    C# Socket通信從入門到精通(12)——多個同步UDP客戶端C#代碼實現(xiàn)

    我們在開發(fā)Udp客戶端程序的時候,有時候在同一個軟件上我們要連接多個服務(wù)器,這時候我們開發(fā)的一個客戶端就不夠使用了,這時候就需要我們開發(fā)出來的軟件要支持連接多個服務(wù)器,最好是數(shù)量沒有限制,這樣我們就能應(yīng)對任意數(shù)量的服務(wù)器連接,由于我們開發(fā)的Udp客戶

    2024年02月04日
    瀏覽(105)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包