代码示例_网络编程_UDP

UDP


 

1. 头文件

 

复制代码
 1 #pragma once
 2 
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 #include <sys/types.h>
 6 #include <sys/stat.h>
 7 #include <sys/socket.h>
 8 #include <strings.h>
 9 #include <string.h>
10 #include <unistd.h>
11 #include <fcntl.h>
12 #include <arpa/inet.h>
13 
14 #define IP "192.168.2.150"
15 #define PORT 9999
16 #define SIZE 128
复制代码

 


 

2. client_udp 

复制代码
 1 #include "net.h"
 2 
 3 int main(void)
 4 {
 5     //1.创建套接字
 6     int fd = socket( AF_INET, SOCK_DGRAM, 0);
 7     if(fd<0){
 8         perror("socket failed");
 9         exit(1);
10     }
11 
12 
13     //2.初始服务器地址
14     struct sockaddr_in cli;
15     cli.sin_family = AF_INET;
16     cli.sin_port = htons(PORT);
17     cli.sin_addr.s_addr = inet_addr(IP);
18 
19 
20     //3.发送
21     char buf[SIZE];
22     while(1){
23     bzero(buf,SIZE);
24     printf("please input :\t");
25     fgets(buf,SIZE,stdin);
26     int ret = sendto( fd,buf,SIZE,0,(struct sockaddr*)&cli,sizeof(cli) );
27         if(ret<0){
28             perror("send failed");
29             exit(1);
30         }
31     if(!strncmp(buf,"quit",4))
32         break;
33     }
34 
35     //4.关闭
36     close(fd);
37 
38 
39     return 0 ;
40 }
复制代码

 


 

3. server_udp 

复制代码
 1 #include "net.h"
 2 
 3 int main(void)
 4 {
 5     //1.创建套接字
 6     int fd = socket(AF_INET,SOCK_DGRAM,0);
 7     if(fd<0){
 8         perror("socket failed");
 9         exit(1);
10     }
11 
12 
13     //2.初始本地地址
14     struct sockaddr_in ser;
15     ser.sin_family = AF_INET;
16     ser.sin_port = htons(PORT);
17     ser.sin_addr.s_addr=inet_addr(IP);
18 
19 
20     //绑定
21     if(  bind(fd,(struct sockaddr*)&ser,sizeof(ser)) <0){
22         perror("bind failed");
23         exit(1);
24     }
25 
26 
27     //接收
28     char buf[SIZE];
29     socklen_t len = sizeof(ser);
30     while(1){
31     bzero(buf,SIZE);
32     int ret = recvfrom(fd,buf,SIZE,0,(struct sockaddr*)&ser,&len);
33         if(ret<0){
34             perror("recvfrom failed");
35             exit(1);
36         }
37         else if(ret==0){
38             printf("客户端下线...");
39             break;
40         }
41         else if(ret>0){
42             printf("server : %s",buf);
43             if(!strncmp(buf,"quit",4))
44             break;
45         }
46     }
47 
48     return 0 ;
49 }
复制代码

 

测试:


 

 

 

success !

 

posted @   panda_w  阅读(390)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示