LINUX下实现UDP传输文件
来源:互联网 发布:网站数据采集解决方案 编辑:程序博客网 时间:2024/05/17 04:51
客户端使用sendto
服务器端使用recv
UDP要想用send需要先使用connect
客户端代码
#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <string.h>#include <netinet/in.h>#include <errno.h>#include <memory.h> #include <stdlib.h> //for malloc#define BUFFER_SIZE 1024int main(){ int sockcd; struct sockaddr_in server; char recv[4096],send1[4096]; char filepath[100];//file to translate FILE *fp; int lenpath; //filepath length char *buffer;//file buffer int fileTrans; buffer = (char *)malloc(sizeof(char)*BUFFER_SIZE); bzero(buffer,BUFFER_SIZE); //memset(buffer,0,sizeof(buffer)); if((sockcd = socket(AF_INET,SOCK_DGRAM,0))<0) { printf("socket build error!\n"); } memset(&server,0,sizeof(server)); server.sin_family= AF_INET; server.sin_port = htons(9999); if(inet_pton(AF_INET,"192.168.61.143",&server.sin_addr)<0) { printf("inet_pton error!\n"); } while(1) { printf("input filepath:\n"); //memset(filepath,'\0',sizeof(filepath)); scanf("%s",filepath);//get filepath lenpath = sendto(sockcd,filepath,sizeof(filepath),0,(struct sockaddr*)&server,sizeof(server)); //lenpath = send(sockcd,filepath,strlen(filepath),0);// put file path to sever if(lenpath<0) { printf("filepath send error!\n"); } fp = fopen(filepath,"r");//opne file sleep(3); while((fileTrans = fread(buffer,sizeof(char),BUFFER_SIZE,fp))>0) { printf("fileTrans =%d\n",fileTrans); if(sendto(sockcd,buffer,fileTrans,0,(struct sockaddr*)&server,sizeof(server))<0) { printf("send failed!\n"); break; } bzero(buffer,BUFFER_SIZE); //memset(buffer,0,sizeof(buffer)); } fclose(fp); } close(sockcd); return 0;}
服务器端代码
#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <string.h>#include <netinet/in.h>#include <errno.h>#include <memory.h> #include <stdlib.h> //for malloc#define BUFFER_SIZE 1024int main(){ int sockcd; struct sockaddr_in server; char recv1[4096],send1[4096]; char filename[100]; char filepath[100]; char *buffer;//file buffer int fileTrans; buffer = (char *)malloc(sizeof(char)*BUFFER_SIZE); bzero(buffer,BUFFER_SIZE); //memset(buffer,0,sizeof(buffer)); int lenfilepath; FILE *fp; int writelength; if((sockcd = socket(AF_INET,SOCK_DGRAM,0))<0) { printf("socket build error!\n"); } memset(&server,0,sizeof(server)); server.sin_family= AF_INET; server.sin_addr.s_addr = htonl(INADDR_ANY); server.sin_port = htons(9999); if((bind(sockcd,(struct sockaddr*)&server,sizeof(server)))==-1) { printf("bind error!\n"); } while(1) { //printf("client IP: %d\n",ntohl(client.sin_addr.s_addr)); //printf("client PORT: %d\n",ntohs(client.sin_port)); memset(filename,'\0',sizeof(filename)); memset(filepath,'\0',sizeof(filepath)); lenfilepath = recv(sockcd,filepath,100,0); printf("filepath :%s\n",filepath); if(lenfilepath<0) { printf("recv error!\n"); } else { int i=0,k=0; for(i=strlen(filepath);i>=0;i--) { if(filepath[i]!='/') { k++; } else break; } strcpy(filename,filepath+(strlen(filepath)-k)+1); } printf("filename :%s\n",filename); fp = fopen(filename,"w"); if(fp!=NULL) { while(fileTrans =recv(sockcd,buffer,BUFFER_SIZE,0)) { if(fileTrans<0) { printf("recv error!\n"); break; } writelength = fwrite(buffer,sizeof(char),fileTrans,fp); if(writelength <fileTrans) { printf("write error!\n"); break; } bzero(buffer,BUFFER_SIZE); //memset(buffer,0,sizeof(buffer)); } printf("recv finished!\n"); fclose(fp); } } close(sockcd); return 0;}
阅读全文
0 0
- LINUX下实现UDP传输文件
- Linux下UDP传输文件示例
- linux下网络编程3:UDP广播传输文件
- linux网络编程-UDP实现文件的传输
- linux下传输文件
- Linux内核--网络栈实现分析(九)--传输层之UDP协议(下)
- Linux内核--网络栈实现分析(九)--传输层之UDP协议(下)
- Linux内核--网络栈实现分析(九)--传输层之UDP协议(下)
- Linux下利用epoll实现两台机器之间的UDP传输丢包统计
- linux 下ssh 传输文件
- linux下使用传输文件
- udp传输文件
- UDP实现可靠传输
- linux下usb传输实现
- linux 实现TCP 传输文件。
- Linux下实现UDP通信
- linux下 UDP 实现聊天室
- Windows下基于UDP的可靠传输协议实现
- 大家都这样优化简历
- TOMCAT-7.0.82,在部署项目后,JSP页面上引入的jar
- Object 类
- Hibernate 自定义查询sql 并使用自定义对象接收查询结果
- 递归---Hanoi塔问题
- LINUX下实现UDP传输文件
- Spring MVC 起步
- 在java项目中,如何限制每个用户访问接口的次数?
- OLTP和OLAP的区别
- RocketMQ原理解析-producer 6.消息在broker落地之事物消息
- scikit learn安装
- 小程序-通讯录
- 常用快捷键记录
- IE11 Windows7下F12 DOC资源管理器不能用Exception in window.onload: Error: An error has ocurredJSPlugin.3005