世界上最详细的Linux C udp实现文件传输
生活随笔
收集整理的這篇文章主要介紹了
世界上最详细的Linux C udp实现文件传输
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最重要的是掌握UDP的基本概念和使用
UDP.h
#ifndef NETWORK_UDP_H #define NETWORK_UDP_H #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <strings.h> #include <string.h> #include <stdlib.h> #include <arpa/inet.h> #include <pthread.h> #include <fcntl.h> #include <sys/stat.h> #include <ctype.h> #endif //NETWORK_UDP_H一切過程都在注釋
service.c
client.c
#include "UDP.h"char buf[1024]; int main(int argc,char *argv[]){int sockfd;char filepath[100]="/home/jacky/hujie.txt";struct sockaddr_in s;bzero(&s,sizeof(s));s.sin_family=AF_INET;s.sin_port=htons(7788);inet_pton(AF_INET,"192.168.200.134",&s.sin_addr.s_addr);if ((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1){//選擇socketperror("[socket]");return -1;}//直接進(jìn)行發(fā)送文件名int ret,ret_r;//用于檢錯if ((ret=sendto(sockfd,filepath,sizeof(filepath),0,(struct sockaddr *)&s,sizeof(s)))==-1){perror("[sento]");return -1;}//進(jìn)行文件內(nèi)容的數(shù)據(jù)傳輸FILE *fp;fp=fopen(filepath,"r");if (fp==NULL){perror("[fopen]");return -1;}//讀取文件內(nèi)容到buf中while (ret){bzero(buf,sizeof(buf));ret_r=fread(buf,sizeof(char ),1024,fp);if (ret_r==-1){perror("[fread]");return -1;}ret=sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)&s,sizeof(s));//這里要注意傳輸內(nèi)容的大小,是你讀取到在buf中的大小,不能直接使用sizeof(buf)usleep(100);//防止出現(xiàn)粘包亂碼}printf("transfer success\n");}實(shí)驗(yàn)結(jié)果
總結(jié)
以上是生活随笔為你收集整理的世界上最详细的Linux C udp实现文件传输的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svnadmin hotcopy
- 下一篇: linux卸载apache服务器,cen