代码笔记 | UDP编程实现
来源:互联网 发布:英雄联盟单机版mac 编辑:程序博客网 时间:2024/06/06 02:48
/********** server.***********/#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.h> #define SERVER_PORT 8000 #define BUFFER_SIZE 1024 #define FILE_NAME_MAX_SIZE 512 int main() { /* 创建UDP套接口 */ struct sockaddr_in server_addr; bzero(&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(SERVER_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); } /* 数据传输 */ while(1) { /* 定义一个地址,用于捕获客户端地址 */ struct sockaddr_in client_addr; socklen_t client_addr_length = sizeof(client_addr); /* 接收数据 */ char buffer[BUFFER_SIZE]; bzero(buffer, BUFFER_SIZE); if(recvfrom(server_socket_fd, buffer, BUFFER_SIZE,0,(struct sockaddr*)&client_addr, &client_addr_length) == -1) { perror("Receive Data Failed:"); exit(1); } /* 从buffer中拷贝出file_name */ char file_name[FILE_NAME_MAX_SIZE+1]; bzero(file_name,FILE_NAME_MAX_SIZE+1); strncpy(file_name, buffer, strlen(buffer)>FILE_NAME_MAX_SIZE?FILE_NAME_MAX_SIZE:strlen(buffer)); printf("%s\\n", file_name); } close(server_socket_fd); return 0; } /***********client.c ************/#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.h> #define SERVER_PORT 8000 #define BUFFER_SIZE 1024 #define FILE_NAME_MAX_SIZE 512 int main() { /* 服务端地址 */ struct sockaddr_in server_addr; bzero(&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); server_addr.sin_port = htons(SERVER_PORT); /* 创建socket */ int client_socket_fd = socket(AF_INET, SOCK_DGRAM, 0); if(client_socket_fd < 0) { perror("Create Socket Failed:"); exit(1); } /* 输入文件名到缓冲区 */ char file_name[FILE_NAME_MAX_SIZE+1]; bzero(file_name, FILE_NAME_MAX_SIZE+1); printf("Please Input File Name On Server:\\t"); scanf("%s", file_name); char buffer[BUFFER_SIZE]; bzero(buffer, BUFFER_SIZE); strncpy(buffer, file_name, strlen(file_name)>BUFFER_SIZE?BUFFER_SIZE:strlen(file_name)); /* 发送文件名 */ if(sendto(client_socket_fd, buffer, BUFFER_SIZE,0,(struct sockaddr*)&server_addr,sizeof(server_addr)) < 0) { perror("Send File Name Failed:"); exit(1); } close(client_socket_fd); return 0; }
0 0
- 代码笔记 | UDP编程实现
- [代码笔记] python 之网络编程: 使用udp 发送音频文件
- Java网络编程笔记--实现UDP广播发送与接收
- 实现UDP协议编程
- UDP编程实现
- unp笔记五 udp编程
- Android udp编程笔记 1
- 代码笔记 | TCP网络协议编程实现
- 实现udp打洞的代码
- Nat 检测代码,udp实现
- Udp 服务器 C#实现代码
- SOCKET udp 服务器端代码实现
- Udp DDOS攻击代码实现
- MFC的UDP编程实现
- JAVA Socket 实现 UDP 编程
- QT:UDP网络编程实现
- JAVA Socket 实现 UDP 编程
- 黑马程序员_网络编程学习笔记-->代码主要是对UDP协议的讲解
- Caffe学习笔记(四)——Windows 下caffe配置相关问题说明
- Java通过Jnative调用windows API接口学习总结
- Android自定义View-Matrix详解
- Android硬件加速以及【WebView】的onPause,onResume,OnDestroy
- Javascript—事件冒泡和事件捕获
- 代码笔记 | UDP编程实现
- SwipeRefreshLayout的使用方法
- leetcode:sort:Wiggle Sort II(324)
- 设备驱动的probe、remove以及shutdown的顺序
- easyui增删改查全部代码
- 腾讯高级工程师:一道面试题引发的高并发性能调试思考
- Jquery中的(function($){...})(jQuery)
- android studio 去除APP的应用标题栏
- Bootstrap Form两列布局