udp是无连接不可靠的IP协议,和tcp有所不同。
udp服务器调用socket(),bind(),listen()完成套接字初始化后,调用accept()阻塞等待处于监听端口的状态。
udp客户端调用socket()初始化后,调用connect()发送SYN字段并阻塞等待应答。
客户端如果一直与服务端连接,服务端退出后重启时,端口号已被占用,和tcp一直,具有TIME_WAIT特性。
代码如下:
udp_server.c
1 #include<stdio.h>
2 #include<sys/types.h>
3 #include<stdlib.h>
4 #include<string.h>
5 #include<sys/socket.h>
6 #include<netinet/in.h>
7 #include<arpa/inet.h>
8 #include<fcntl.h>
9 static void usage(const char*proc)
10 {
11 printf("Usage:%s [local_ip] [local_port]\n",proc);
12 }
13 int main(int argc,char*argv[])
14 {
15 if(argc!=3)
16 {
17 usage(argv[0]);
18 return 1;
19 }
20 int sock=socket(AF_INET,SOCK_DGRAM,0);
21 if(sock<0)
22 {
23 perror("socket");
24 return 2;