UDP 客戶端伺服器

2021-08-27 11:23:01 字數 2122 閱讀 4284

//udp--客戶端

#include

#include

#include

#include

#include

#define size 100

#define ip "127.0.0.1"

#define port 10086

int main()

; struct sockaddr_in addr;

//建立socket--udp

socketid = socket(af_inet, sock_dgram, 0);

if (socketid < 0)

printf("socket ok\r\n");

//設定對方的位址

addrlength = sizeof(addr);

memset(&addr, 0, addrlength);

addr.sin_family = af_inet;

addr.sin_port = htons(port);

addr.sin_addr.s_addr = inet_addr(ip);

//傳送訊息

fgets(buf, size - 1, stdin);

ret = sendto(socketid, buf, strlen(buf) - 1, 0, (struct sockaddr *)&addr, addrlength);

if (ret > 0)

//接收訊息

memset(buf, 0, size);

ret = recvfrom(socketid, buf, size - 1, 0, (struct sockaddr *)&addr, &addrlength);

if (ret > 0)

//關閉套接字

close(socketid);

return

0;}

//udp--server

#include

#include

#include

#include

#include

#define ip "127.0.0.1"

#define port 10086

#define size 100

int main()

; struct sockaddr_in addr;

//建立套接字 udp

socketid = socket(af_inet, sock_dgram, 0);

if (socketid < 0)

//設定套接字位址可以重用

setsockopt(socketid, sol_socket, so_reuseaddr, &on, sizeof(on));

printf("socket ok\r\n");

//繫結自己的位址

addrlength = sizeof(addr);

memset(&addr, 0, addrlength);

addr.sin_family = af_inet;

addr.sin_port = htons(port);

addr.sin_addr.s_addr = inaddr_any;

ret = bind(socketid, (struct sockaddr *)&addr, addrlength);

if (ret < 0)

printf("bind ok\r\n");

//接收訊息

ret = recvfrom(socketid, buf, size - 1, 0, (struct sockaddr *)&addr, &addrlength);

if (ret > 0)

//傳送訊息

fgets(buf, size - 1, stdin);

ret = sendto(socketid, buf, strlen(buf) - 1, 0, (struct sockaddr *)&addr, addrlength);

if (ret > 0)

//關閉套接字

close(socketid);

return

0;}

實現簡單UDP伺服器客戶端模型

udp是無連線的,在資料的傳送之前不需要連線,只需要知道要發資料給誰,然後將資料發出即可,可以直接接收到其他人發來的資料,不必呼叫listen 和accept 函式。所以udp中建立好套接字後,就可以直接進行資料的傳輸。基於udp的接收和傳送函式 include include ssize t se...

基於UDP的伺服器端和客戶端

前面的文章中我們給出了幾個tcp的例子,對於udp而言,只要能理解前面的內容,實現並非難事。udp不像tcp,無需在連線狀態下交換資料,因此基於udp的伺服器端和客戶端也無需經過連線過程。也就是說,不必呼叫 listen 和 accept 函式。udp中只有建立套接字的過程和資料交換的過程。tcp中...

6 1 基於UDP的伺服器端 客戶端

1.udp套接字原理 可靠性方面來說,tcp的確比udp好,但是udp的結構比tcp簡潔,不會傳送類似ack應答訊息,也不會有seq序號,效能有時比tcp高出很多。同時區分tcp和udp的重要標誌是流控制 tcp的生命在於流控制。圖中,ip的作用是讓離開主機b的udp資料報準確傳送到主機 但是最終交...