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...