udp socket服务端客户端示例
2013-06-29 17:58
405 查看
创建UDP服务端监听
客户端发送数据
服务端
客户端
客户端发送数据
服务端
#include <stdio.h> #include <sys/select.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <string.h> #include <stdlib.h> #define PORT 12345 #define BUF_SIZE 65536 void buf_dump(char *buf, int len) { #define PER_LINE 32 printf("--------------------------------\n"); int i; for (i = 0; i < len; i++) { printf("%02x ", (unsigned char)buf[i]); if (((i + 1) % PER_LINE) == 0) { printf("\n"); } } printf("\n--------------------------------\n"); #undef PER_LINE } int main(void) { printf("server start\n"); int ret = -1; int sockfd = -1; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket()"); } struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr.s_addr = htons(INADDR_ANY); ret = bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)); if (ret < 0) { perror("bind()"); } int max_fd = sockfd + 1; fd_set rfds; char buf[BUF_SIZE]; int n = 0; while (1) { FD_ZERO(&rfds); FD_SET(sockfd, &rfds); ret = select(max_fd, &rfds, NULL, NULL, NULL); if (ret > 0) { if (FD_ISSET(sockfd, &rfds)) { memset(buf, 0, sizeof(buf)); n = recvfrom(sockfd, buf, sizeof(buf), 0, NULL, NULL); if (n > 0) { buf_dump(buf, n); } else { perror("recvfrom()"); } } } else { perror("select()"); } } return 0; }
客户端
#include <stdio.h> #include <sys/select.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <string.h> #define PORT 12345 #define BUF_SIZE 65536 int main(void) { printf("client start\n"); int ret = -1; int sockfd = -1; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket()"); } struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); while (1) { ret = sendto(sockfd, "hello", 5, 0, (struct sockaddr *)&server_addr, sizeof(server_addr)); if (ret < 0) { perror("sendto()"); } sleep(2); } return 0; }
相关文章推荐
- udp socket客户端和udp服务端程序示例分享
- 一个简单的UDP服务端和客户端示例
- C# WebSocket 服务端示例代码 + HTML5客户端示例代码
- Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
- Android Socket 封装,支持 TCP/UDP 客户端和服务端,支持自定义粘包处理、验证处理、解析处理。
- python实现socket客户端和服务端简单示例
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- vc++实现的tcp socket客户端和服务端示例
- udp服务端和客户端程序示例
- 简单的java socket客户端和服务端示例
- Socket异步服务器,可以监控客户端的状态,功能有,文字测试,服务端向客户端传输屏幕录像(UDP传输)、监控客户端屏幕(UDP传输),抖动用户窗体、发送文件给用户、扫描客户的C盘目录。
- golang实现简单的udp协议服务端与客户端示例
- Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
- PHP基于socket实现的简单客户端和服务端通讯功能示例
- 跨平台Socket封装——一个服务端代码和客户端代码示例
- nodejs socket实现的服务端和客户端功能示例
- 【Android】Socket通讯示例(服务端/客户端)
- python实现socket客户端和服务端简单示例
- C语言 Socket入门示例2——模拟远程CMD(客户端向服务器发送命令,服务端执行该命令)