91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

P2P文件傳輸,實現上傳和下載功能,用于局域網內部的文件傳輸。

資源截圖

代碼片段和文件信息

#include?“P2P_Download_Client.h“

int?main(void)
{
char?url[MAX]?=?“p2p://192.168.100.27/home/okfile/200792611456486_2.jpg“;
do_P2P_Download(url);
}

int?do_P2P_Download(char*?url)
{
int?ret?=?0?len?=?0?total_len?=?0?wlen?=?0;
FILE?*fp;
P2P_MESSAGE*?message;
P2P_FILE_BE*?file_be;
char?buf[1024];
char?mark_name[256];
char?temp[256];

message?=?p2p_URL_Analyse(url);

if?(message?!=?NULL)
{
//建立socket連接
int?sfd?=?socket_connect(message->ip?8010);
if?(sfd? {
printf(“socket_connect?failed.\n“);
return?-1;
}
//開始發送命令,發送命令和文件地址
printf(“socket_connect?successed\n“);
memset(buf?0?sizeof(buf));
strcpy(buf?“GET_DATA“);
strcat(buf?“#“);
strcat(buf?message->file_addr);
printf(“命令和文件地址:%s\n“?buf);
//發送接受文件命令
ret?=?send(sfd?buf?strlen(buf)?0);
if?(ret? {
perror(“send?error\n“);
return?-1;
}
//保存本地的標記文件
strcpy(mark_name?message->file_name);
strcat(mark_name?“.mark“);
//發送文件開始結束字jie
memset(buf?0?sizeof(buf));
//strcpy(buf?“0#10000#10000“);
/*ret?=?send(sfd?buf?strlen(buf)?0);
if?(ret? {
perror(“send?error\n“);
return?-1;
}*/
//接受數據文件
fp?=?fopen(message->file_name?“wb“);
printf(“message->file_name:%s\n“?message->file_name);
if?(fp?==?NULL)
{
perror(“fopen“);
return?-1;
}
printf(“fopen?file?ok\n“);
//接受文件數據
while?(1)
{
memset(buf?0?sizeof(buf));
len?=?recv(sfd?buf?sizeof(buf)?0);
printf(“recved?:%d\n“?len);
if?(len? {
perror(“recv“);
break;
}
else?if?(len?==?0)
{
printf(“recv?over\n“);
break;
}
else
{
if?((strcmp(buf?“error“)?==?0)?||?(strcmp(buf?“file_open_error“)?==?0))
{
printf(“server?has?something?wrong!\n“);
break;
}
wlen?=?fwrite(buf?1?len?fp);
printf(“fwrite:%d\n“?wlen);
if?(wlen? {
perror(“fwrite“);
break;
}
else?if?(wlen?==?0) //調用不成功
{
printf(“fwrite?error\n“);
break;
}
else
{
printf(“fwrite?OK\n“);
}
}
total_len?+=?len;
}
printf(“recved?total?length:%d\n“?total_len);
close(fp);
//寫入到標記文件中
fp?=?fopen(mark_name?“wb“);
if?(fp?==?NULL)
{
perror(“fopen“);
return?-1;
}
memset(buf?0?sizeof(buf));
strcpy(buf?“0#“);
sprintf(temp?“%d“?total_len);
strcat(buf?temp);
strcat(buf?“#“);
strcat(buf?temp);
fwrite(buf?1?strlen(buf)?fp);
fclose(fp);
}
return?0;
}


int?socket_connect(char*?ip??int?port)
{
int?sockfd;
int?bind_ret;
socklen_t?len;

//設置地址結gou
struct?sockaddr_in?client_addr;
struct?sockaddr_in?server_addr;
//初始化地址結購
memset(&client_addr0sizeof(client_addr));
memset(&server_addr0sizeof(client_addr));
//填充客戶端地址結構中的值
client_addr.sin_family=AF_INET;
client_addr.sin_addr.s_addr=htons(INADDR_ANY);
client_addr.sin_port=htons(0);//當port為0的時候表示讓系統隨機選擇一個端口號
//create?socket
sockfd=socket(AF_INETSOCK_STREAM0);
if(sockfd? {
printf(“create?socket?failed.\n“);
return?-1;
}
//bind?地

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????1744??2014-12-17?21:05??P2P_Download_Server.h

?????文件???????5472??2014-12-17?21:35??P2P_Download_Client.c

?????文件???????1240??2014-12-17?21:08??P2P_Download_Client.h

?????文件???????5538??2014-12-17?21:33??P2P_Download_Server.c

-----------?---------??----------?-----??----

????????????????13994????????????????????4


評論

共有 條評論