linux下udp编程
来源:互联网 发布:免费申请域名的步骤 编辑:程序博客网 时间:2024/05/17 04:57
#include<sys/types.h>#include<sys/socket.h>#include<unistd.h>#include<netinet/in.h>#include<arpa/inet.h>#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<netdb.h>#include<stdarg.h>#include<string>#include<iostream>#include<cstring> /* 创建UDP套接口 */ struct sockaddr_in server_addr; memset(&server_addr,0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(port); /* 创建socket */ int server_socket_fd = socket(AF_INET, SOCK_DGRAM, 0); if(server_socket_fd == -1) { perror("Create Socket Failed:"); exit(1); } /* 绑定套接口 */ if(-1 == (bind(server_socket_fd,(struct sockaddr*)&server_addr,sizeof(server_addr)))) { perror("Server Bind Failed:"); exit(1); } struct sockaddr_in client_addr; socklen_t client_addr_length = sizeof(client_addr); //设置超时 struct timeval tv_out; tv_out.tv_sec = 3;//等待10秒 tv_out.tv_usec = 0; setsockopt(server_socket_fd,SOL_SOCKET,SO_RCVTIMEO,&tv_out, sizeof(tv_out)); /* 接收数据 */ memset(buffer,0, lenbuff); if(recvfrom(server_socket_fd, buffer, lenbuff,0,(struct sockaddr*)&client_addr, &client_addr_length) == -1) //MSG_DONTWAIT 将0换为MSG_DONTWAIT就是非阻塞模式,可能会cpu占用过高问题 { if(errno!=EAGAIN) //阻塞不设置超时时,不用判断,直接去掉该判断,保留子语句 { perror("Receive Data Failed:"); exit(1); } } close(server_socket_fd);
0 0
- linux下UDP编程
- linux下udp编程
- Linux下的UDP编程
- linux下socket编程(udp)
- Linux下的UDP编程
- Linux应用开发--- Linux下UDP编程
- Linux下的UDP协议编程
- linux下udp编程简单示例
- Linux下Socket编程之UDP原理
- Linux下Socket编程之UDP应用
- 基于Linux下的UDP编程
- Linux下网络编程实现UDP
- 基于Linux下的UDP编程
- 基于Linux下的UDP编程
- 基于Linux下的UDP编程
- Linux下Socket编程之UDP应用
- 基于Linux下的UDP编程
- 基于Linux下的UDP编程
- Create CreateEx
- 在smarty模板引入jquery
- Codeforces Problem 598E - Chocolate Bar
- 在github上的贡献图里画出你想要的图形
- YTU 1011: Rails
- linux下udp编程
- bluestacks启动问题
- GCC-问题-链接库链上了仍存在"undefined reference to"?
- 74.Isomorphic Strings
- 5-8 UVA 230 Borrowers图书管理系统
- 十步完全理解SQL
- 什么是XML?
- 数据结构与算法——在一个数组中实现两个堆栈(C语言)
- How to building OpenSSL 0.9.8c