UDP協議的客戶機和伺服器通訊

2021-07-30 16:40:26 字數 2043 閱讀 1657

在tcp/ip模型中,udp協議位與傳輸層,在網路層之上而在應用層之下。udp協議向應用程式提供一種面向無連線的服務,通常udp協議被用於不需要可靠資料傳輸的網路環境中(不可靠)。udp不需要建立連線。

udp伺服器和客戶端建立連線**如下:

在**實現之前我們來看看udp協議下的sendto和recvfrom函式:

1、 sendto函式用來在udp套接字上傳送資料,在shell下輸入man sendto可獲得其原型,其功能和send類似,但sendto不需要套接字處於連線狀態,同時因為是沒有連線的套接字,在使用sendto的時候需要制定資料的目的位址。

ssize_t sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);

2、recvfrom函式用來在udp套接字上接受資料,函式原形:

ssize_t recvfrom(int s, void *buf,size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);

recvfrom函式和recv函式功能類似,只是函式recv只能用於面向連線的套接字,而recvfrom沒有此限制,可以使用在無連線的套接字上接收資料。

下面我們看看**實現過程:

//伺服器/

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define max_buffer_size 256

int main()

struct sockaddr addrser,addrcli;

addrser.sin_family = af_inet;

addrser.sin_port = htons(9090);

addrser.sin_addr.s_addr = inet_addr("192.168.0.1");

socklen_t len = sizeof(struct sockaddr);

int res = bind(sockser, (struct sockaddr*)&addrser, len);

if(res == -1)

char sendbuff[max_buffer_size];

char recvbuff[max_buffer_size];

while(1)

//客戶端/

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define max_buffer_size 256

int main()

struct sockaddr addrser;

addrser.sin_family = af_inet;

addrser.sin_port = htons(9090);

addrser.sin_addr.s_addr = inet_addr("192.168.0.1");

socklen_t len = sizeof(struct sockaddr);

char sendbuff[max_buffer_size];

char recvbuff[max_buffer_size];

while(1)

close(sockser);

return

0;}

以上只是簡單的udp協議的通訊例子,後續會繼續更改的^0^

TCP協議下的客戶機和伺服器模型

tcp可以提供一種面向連線的 可靠的資料傳輸服務。這是tcp服務的 過程 使用tcp進行通訊的過程 1 建立連線 第一步 連線的發起端 客戶機 向目標計算接 伺服器 傳送乙個請求連線的請求資料報。第二步 伺服器收到請求後,對客戶機端的同步訊號作出響應,並傳送自己的同步訊號給客戶端。第三步 客戶端對伺...

go簡易udp客戶端和伺服器

以前使用socket程式設計時,一般是如下步驟 建立socket,socket 繫結socket,bind 監聽,listen 接受連線,accept 接受 傳送,recv send go語言對其進行了抽象和封裝,剛開始接觸有可能不太適應 譬如我第一天用的時候覺得api好難找 建議參考文件 後來發現...

C Socket多客戶端和伺服器通訊

1 總述 關於socket通訊主要採用了c 程式設計,實現多執行緒通訊,多個客戶端同時和伺服器通訊,並支援伺服器以廣播的形式向所有客戶端傳送訊息,該歷程未加介面。具體的細節和原始碼見下分析 2 執行流程 伺服器端 執行程式後,輸入 s 啟動伺服器,並提示下一步該怎樣操作。此時可以連線客服端,當有客戶...