9.2网络-socket2_UDP通信 2015/8/7
来源:互联网 发布:unity3d android 调试 编辑:程序博客网 时间:2024/05/29 19:46
UDP
recvfrom
阻塞等待客户端数去请求
接收客户端发送来的数据,和地址端口信息
#include
sendto
给客户端地址端口addr发送数据应答
#include
#include <stdio.h>#include <string.h>#include <ctype.h>#include <sys/socket.h>#include <unistd.h>#include <sys/types.h>#include <arpa/inet.h>#define SERV_PORT 8000int main(void){ int sockfd; struct sockaddr_in servaddr, cliaddr; int n, i; char buf[256]; char str[256]; socklen_t cliaddrlen; sockfd = socket(AF_INET, SOCK_DGRAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SERV_PORT); servaddr.sin_addr.s_addr = htonl(INADDR_ANY); bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); printf("Receiving ...\n"); while (1) { cliaddrlen = sizeof(cliaddr); n = recvfrom(sockfd, buf, sizeof(buf), 0, (struct sockaddr *)&cliaddr, &cliaddrlen); //接收 printf("Rece: %s, PORT:%d\n", inet_ntop(AF_INET, &cliaddr.sin_addr, str, cliaddrlen), ntohs(cliaddr.sin_port)); for (i = 0; i < n; i++) buf[i] = toupper(buf[i]); sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&cliaddr, cliaddrlen); //发送 bzero(buf, sizeof(buf)); } close(sockfd); return 0;}
client.c
#include <stdio.h>#include <unistd.h>#include <sys/socket.h>#include <sys/types.h>#include <arpa/inet.h>#include <string.h>#include <strings.h>#define SERV_PORT 8000int main(void){ int sockfd; struct sockaddr_in servaddr; char buf[256]; socklen_t servaddlen; int n; sockfd = socket(AF_INET, SOCK_DGRAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SERV_PORT); inet_pton(AF_INET, "192.168.188.133", &servaddr.sin_addr); while (fgets(buf, sizeof(buf), stdin) != NULL) { servaddlen = sizeof(servaddr); sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&servaddr, servaddlen); n = recvfrom(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&servaddr, &servaddlen); write(STDOUT_FILENO, buf, n); } close(sockfd); return 0;}
0 0
- 9.2网络-socket2_UDP通信 2015/8/7
- 9.1网络-socket1_TCP通信 2015/8/7
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- 网络通信
- The method makeText(Context, int, int) in the type Toast is not applicable for the arguments (new Vi
- java小程序: 简易计算器
- RPG2.0战斗框架学习2
- 36 最长公共子序列【lcs】
- vs2013 error c4996: 'fopen': This function or variable may be unsafe
- 9.2网络-socket2_UDP通信 2015/8/7
- 基于贪心算法的几类区间覆盖问题
- velocity 替换\n 换行符 为html <br />
- leetcode Valid Parentheses 有效括号
- jlink_for_linux
- html借助一般处理程序实现文件上传到服务器
- Ubuntu下搜狗输入的安装
- [leetcode-92]Reverse Linked List II(c++)
- HDU 1198 Farm Irrigation 并查集