博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单的udp客户服务端程序
阅读量:4543 次
发布时间:2019-06-08

本文共 2464 字,大约阅读时间需要 8 分钟。

 

服务端程序:server.c

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 8 9 10 11 #define PORT 1234512 13 int main()14 {15 struct sockaddr_in server_addr, client_addr;16 char msg[1024];17 int len;18 static count = 1;19 int fd = socket(AF_INET, SOCK_DGRAM, 0);20 bzero(&server_addr, sizeof(struct sockaddr_in));21 22 server_addr.sin_family = AF_INET;23 server_addr.sin_port = htons(PORT);24 server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");25 26 bind(fd, (struct sockaddr*)&server_addr, sizeof(struct sockaddr_in));27 28 socklen_t addr_len;29 while(1)30 {31 bzero(msg, sizeof(msg));32 addr_len = sizeof(client_addr);33 len = recvfrom(fd, msg, sizeof(msg), 0, (struct sockaddr*)&client_addr, &addr_len);//百度百科直接搜34 printf("%d: ", len);35 printf("msg from: %s\n", inet_ntoa(client_addr.sin_addr));36 printf("msg: %s\n", msg);37 sendto(fd, msg, len, 0, (struct sockaddr*)&client_addr, addr_len);//百度百科直接搜38 39 }40 41 return 0;42 43 }

客户端程序:client.c

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 8 9 10 11 #define PORT 12345 12 #define IP "127.0.0.1"13 int main()14 {15 struct sockaddr_in server_addr;16 char msg[1024];17 int len;18 int fd = socket(AF_INET, SOCK_DGRAM, 0); //创建socket,注意udp创建的是数据包套接字,SOCK_DGRAM19 if(fd < 0)20 {21 printf("socket error\n");22 }23 bzero(&server_addr, sizeof(struct sockaddr_in)); //相当于memset(&server_addr, 0, sizeof(struct sockaddr_in));24 25 //指定服务端的端口和ip26 server_addr.sin_family = AF_INET; 27 server_addr.sin_port = htons(PORT);28 29 inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr);30 31 32 socklen_t addr_len;33 int ret;34 int n;35 while(1)36 {37 //int n = read(STDIN_FILENO, msg, sizeof(msg));38 fgets(msg, 1024, stdin); //用户输入字符串,fgets会读入字符'\n'39 printf(" msg: %s", msg);40 //发送到server端41 ret = sendto(fd, msg, strlen(msg), 0, (struct sockaddr*)&server_addr, sizeof(server_addr));42 printf("ret: %d\n", ret);43 //接收从服务端收到的字符串44 n = recvfrom(fd, msg, sizeof(msg), 0, NULL, NULL);45 printf("n=%d\n", n);46 msg[n]='\0';// 收到的字符串后面没有'\0',无法printf输出,所以在字符串后添加'\0'47 printf("%s", msg);48 printf("__________________________________\n");49 50 }51 52 return 0;53 54 }
View Code

 

转载于:https://www.cnblogs.com/chuanyang/p/6554813.html

你可能感兴趣的文章
CYQ学习主要摘要
查看>>
04 shell编程之循环语句
查看>>
mysql性能优化-慢查询分析、优化索引和配置
查看>>
Dubbo和Spring Cloud微服务架构对比
查看>>
发现对各类项目有用的不同JavaScript的Web UI
查看>>
HTML5 Shiv – 让该死的IE系列支持HTML5吧
查看>>
JSON 之JAVA 解析
查看>>
【done】大众点评
查看>>
18.索引
查看>>
Software Testing Homework1: An error in my past program
查看>>
还原bidplant
查看>>
servlet+jsp修改商品信息
查看>>
Qt禁止调整窗口的大小
查看>>
javascript DOM——初学2
查看>>
eclise linux c mysql
查看>>
Js跳出循环
查看>>
SQL Server truncate与delete的区别
查看>>
JavaScript表单验证
查看>>
MySql表结构修改详解
查看>>
errno多线程安全(转载)
查看>>