udp是無連線不可靠的ip協議,和tcp有所不同。
udp伺服器呼叫socket(),bind(),listen()完成套接字初始化後,呼叫accept()阻塞等待處於監聽埠的狀態。
udp客戶端呼叫socket()初始化後,呼叫connect()傳送syn欄位並阻塞等待應答。
客戶端如果一直與服務端連線,服務端退出後重啟時,埠號已被占用,和tcp一直,具有time_wait特性。
**如下:
udp_server.c
1
#include
2#include
3#include
4#include
5#include
6#include
7#include
8#include
9static
void usage(const
char*proc)
10 13int main(int argc,char*argv)
14 20int sock=socket(af_inet,sock_dgram,0);
21if(sock<0)
22
2627
struct sockaddr_in local;
28 local.sin_family=af_inet;
29 local.sin_port=htons(atoi(argv[2]));
30 local.sin_addr.s_addr=inet_addr(argv[1]);
3132
if(bind(sock,(struct sockaddr*)&local,sizeof(local))<0)
36char buf[1024];
37while(1)
38
51 }
5253 close(sock);
54return
0; 55 }
udp_client.c
1
#include
2#include
3#include
4#include
5#include
6#include
7#include
8#include
9static
void usage(const
char*proc)
10 13int main(int argc,char*argv)
14 20int sock=socket(af_inet,sock_dgram,0);
21if(sock<0)
22
13int main(int argc,char*argv)
14 20int sock=socket(af_inet,sock_dgram,0);
21if(sock<0)
22
26struct sockaddr_in server;
27 server.sin_family=af_inet;
28 server.sin_port=htons(atoi(argv[2]));
29 server.sin_addr.s_addr=inet_addr(argv[1]);
3031
char buf[1024];
32while(1)
33
53 }
54 }
5556 close(sock);
57return
0; 58 }
可以先在乙個主機的兩個終端測試
127.0.0.1是回環位址,8080是埠號。
Linux下的UDP程式設計
一 引言 udp是tcp ip協議中的傳輸層協議的一種,本文介紹了在linux下編寫基於udp協議的client server模型的程式的方法,並給出了乙個echo client server例子程式。二 udp協議簡介 udp是一種簡單的傳輸層協議,在rfc768中有詳細描述。udp協議是一種非連...
基於Linux下的UDP程式設計
一.linux下udp程式設計框架 使用udp進行程式設計可以分為客戶端和伺服器端兩部分。1.伺服器端程式包括 建立套接字 將套接字位址結構進行繫結 讀寫資料 關閉套接字 2.客戶端程式包括 建立套接字 讀寫資料 關閉套接字 3.伺服器端和客戶端程式之間的差別 伺服器端和客戶端兩個流程之間的主要差別...
Linux下socket程式設計之UDP
如下 udp client.c include include include include include include include static void usage char proc int main int argc,char argv int sock socket af ine...