Linux下UDP傳輸檔案示例

2021-08-01 11:10:25 字數 2367 閱讀 3681

linux在嵌入式作業系統中所佔的比例是非常大的,現將自己在學習中的udp的部分**分享給大家,本文主要運用udp來傳輸檔案,**如下:

send.c

#include 

#include

#include

#include

#include

#include

#include

//#define ip "192.168.0.99"

#define ip "127.0.0.1"

#define port 5959

struct data_t ;

int sock_fd;

int addr_len;

struct sockaddr_in addra1, addra2;

int main(void)

addra1.sin_family = af_inet;

addra1.sin_port = htons(port);

addra1.sin_addr.s_addr = inet_addr(ip);

sock_fd = socket(af_inet, sock_dgram, 0 );

if(0 > sock_fd)

addr_len = sizeof(addra2);

gettimeofday(&starttime,null);

while ( 1 )

if(0 > recvfrom(sock_fd, &ret, sizeof(int), 0,

(struct sockaddr *)&addra2, &addr_len))

//printf("ret:%d len:%d sum:%d\n", ret, data.len, data.sum);

}while ( ret );

if ( data.len < 1024-1 )

}gettimeofday(&endtime,null);

timeuse = 1000000*(endtime.tv_sec - starttime.tv_sec) + (endtime.tv_usec - starttime.tv_usec);

timeuse /= 1000000;

printf("timeuse = %f\n",timeuse);

}

recv.c

#include 

#include

#include

#include

#include

#include

#include

#define port 5959

struct data_t ;

int sock_fd;

int addr_len;

struct sockaddr_in addra, addrb;

int main(void)

sock_fd = socket(af_inet, sock_dgram, 0 );

if(0 > sock_fd)

addra.sin_family = af_inet;

addra.sin_port = htons(port);

addra.sin_addr.s_addr = inaddr_any;

if(0 > bind(sock_fd, (struct sockaddr *)&addra, sizeof(addra)))

addr_len = sizeof(addrb);

gettimeofday(&starttime,null);

while ( 1 )

for ( sum=0, i=0; iif ( sum == data.sum ) else

if(0 > sendto(sock_fd, &ret, sizeof(int), 0,

(struct sockaddr *)&addrb, addr_len))

//printf("ret:%d len:%d\n", ret, data.len);

}while ( ret );

write(fd, data.buf, data.len);

if ( data.len < 1024-1 )

}gettimeofday(&endtime,null);

timeuse = 1000000*(endtime.tv_sec - starttime.tv_sec) + (endtime.tv_usec - starttime.tv_usec);

timeuse /= 1000000;

printf("timeuse = %f\n",timeuse);

}

linux下udp大檔案傳輸

近日小弟做了個linux下使用者資料報協議大檔案傳輸程式發上來與大家共勉。在 redhat 9.0 下編譯通過。最大測試無差錯傳輸檔案 288m 最大測試傳輸速度 6.5m s 可能這裡並不需要這種型別的帖子,但希望各位能代小弟轉貼,因為網路上很難搜尋到這種可以解決丟包問題的 級實現方法,希望每乙個...

Linux下用UDP實現檔案傳輸

原文 udp程式設計框圖 udp協議中伺服器和客戶端的互動存在於資料的收發過程中。進行網路資料收發的時候,伺服器和客戶端的資料是對應的 客戶端傳送資料的動作,對伺服器來說是接收資料的動作 客戶端接收資料的動作,對伺服器來說是傳送資料的動作。實現檔案的傳輸大概分為這幾個步驟 客戶端讀檔案,將內容放在c...

如何做linux下udp大檔案傳輸

伺服器端 客戶端 include include include include include include include include include include include include include include define max size 1024 40 defin...