linux网络通信之udp
2017-03-24 20:13
239 查看
客户端
/************************************************************************* > File Name: client.c > Author: 联合作战实验室 > Mail: v.manstein@qq.com > Created Time: Thu 23 Mar 2017 11:11:10 AM CST ************************************************************************/ #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<unistd.h> #include<netinet/in.h> #include<arpa/inet.h> #include<stdlib.h> int main(int argc, const char* argv[]) { int sockfd; struct sockaddr_in sockaddr; // 网络通信结构:包含ip和端口号 char buf[128] = {}; int len = sizeof(struct sockaddr); // 建立通信套接字 if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket error"); exit(-1); } sockaddr.sin_family = AF_INET; sockaddr.sin_addr.s_addr = inet_addr(argv[1]); sockaddr.sin_port = htons(atoi(argv[2])); while(1) { printf("Input: "); fgets(buf, 128, stdin); sendto(sockfd, buf, sizeof(buf), 0, (struct sockaddr*)&sockaddr, len);// 直接向目标ip和端口号的地址发消息 } }
服务器
/************************************************************************* > File Name: server.c > Author: 联合作战实验室 > Mail: v.manstein@qq.com > Created Time: Thu 23 Mar 2017 11:11:10 AM CST ************************************************************************/ #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<unistd.h> #include<netinet/in.h> #include<arpa/inet.h> #include<stdlib.h> #include<string.h> int main(int argc, const char* argv[]) { int sockfd; struct sockaddr_in servaddr, clientaddr; // 实例化网络通信结构体对象 char buf[128] = {}; int len = sizeof(struct sockaddr); // 创建socket if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket error"); exit(-1); } servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = inet_addr(argv[1]); servaddr.sin_port = htons(atoi(argv[2])); // 绑定通信结构体和socket if (bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) { perror("bind"); exit(1); } while(1) { recvfrom(sockfd, buf, sizeof(buf), 0, (struct sockaddr*)&clientaddr, &len); // 接收客户端消息 printf("roger: -> %s %d", inet_ntoa(clientaddr.sin_addr), ntohs(clientaddr.sin_port)); printf("recvfrom client: %s\n", buf); memset(buf, 0, sizeof(buf)); strcpy(buf, "ok form server"); sendto(sockfd, buf, sizeof(buf), 0, (struct sockaddr*)&clientaddr, len); // 向客户端发送消息 } }
相关文章推荐
- Linux网络通信(二)Socket编写TCP/UDP
- Linux网络通信编程(套接字模型TCP\UDP与IO多路复用模型select\poll\epoll)
- linux中使用UDP实现网络通信
- Linux网络通信实例(TCP和UDP)
- linux网络通信-------UDP协议
- [Linux网络编程]UDP编程--UDP通信程序客户端
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- linux 网络编程:客户端与服务器通过TCP协议相互通信 + UDP
- Linux—网络通信(UDP)
- Linux 网络编程六(socket通信UDP版)
- [Linux网络编程]UDP编程--UDP通信程序服务器端
- linux下udp 网络间通信程序+书上没有提过的问题自己想法
- 基于linux简单的UDP网络通信代码
- linux网络通信(TCP和UDP)
- Linux网络通信(二)Socket编写TCP/UDP
- Linux c==使用UDP实现网络通信(14)
- Linux网络通信(二)Socket编写TCP/UDP
- Linux网络通信编程(套接字模型TCP\UDP与IO多路复用模型select\poll\epoll)
- 在linux网络UDP通信中,关于客户端是否绑定的理解
- linux 网络编程:客户端与服务器通过TCP协议相互通信 + UDP