在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沒有此限制,可以使用在無連線的套接字上接收資料。
下面我們看看**實現過程:
以上只是簡單的udp協議的通訊例子,後續會繼續更改的^0^//伺服器/
#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;}
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 啟動伺服器,並提示下一步該怎樣操作。此時可以連線客服端,當有客戶...