導航:首頁 > 編程大全 > 網路文件傳輸vc

網路文件傳輸vc

發布時間:2023-05-14 00:21:18

㈠ VC怎麼進行文件傳輸

vc對文來件進行網路傳輸要用到源套接字,傳輸效率不低,像ie那樣滿足用戶需要也沒有問題,但是實現越來很復雜,想傳輸文件夾思路只能是把文件夾裡面的文件一個一個的傳輸,同時把文件夾名以及文件名也傳輸過去,實現上傳和下載系統也有專門的函數,不用你自己去寫了,但是你想實現的高級一點就自己寫吧。

㈡ 關於VC++ SOCKET文件傳輸問題

你先來用readfile把文件一次性讀到緩沖區中。自這樣下面的操作就和傳送字元一樣了。在將文件的長度通知客戶端,讓他分配好內存,准備接受文件。下面就將緩沖區的東西發送到客戶端就行了。這個方法進行小文件傳輸還湊合,要傳輸大文件需要先把文件分塊傳送。

char *pBuffer = new char[1024];
DWORD dwReadSize = 0;
::ReadFile(hFile,pBuffer,1024,&dwReadSize,NULL);
send(socket,reinterpret_cast<char *>(pBuffer),dwReadSize,NULL);

當然,文件大小需要你用GetFileSize來獲得
最後記得closehandle

㈢ VC SOCKET 文件傳輸程序問題

用VC6.0建立兩個WIndows32 Console Application程序,並且選擇一個支持MFC的程序,第一個程序中輸入:
// server.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "server.h"
#include<afxsock.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// The one and only application object

CWinApp theApp;

using namespace std;

typedef struct _SOCKET_STREAM_FILE_INFO {

TCHAR szFileTitle[128]; //文件的標題名
DWORD dwFileAttributes; //文件的屬性
FILETIME ftCreationTime; //文件的創建時間
FILETIME ftLastAccessTime; //文件的最後訪問時間
FILETIME ftLastWriteTime; //文件的最後修改時間
DWORD nFileSizeHigh; //文件大小的高位雙字
DWORD nFileSizeLow; //文件大小的低位雙字
DWORD dwReserved0; //保留,為0
DWORD dwReserved1; //保留,為0

} SOCKET_STREAM_FILE_INFO, * PSOCKET_STREAM_FILE_INFO;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// initialize MFC and print and error on failure
if (!AfxWinInit(::GetMoleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
CString strHello;
strHello.LoadString(IDS_HELLO);
cout << (LPCTSTR)strHello << endl;
}

CSocket sockClient;
sockClient.Create();
if(!sockClient.Connect("127.0.0.1", 800))
{
AfxMessageBox("連接到對方機器失敗!");
return 0;
}
SOCKET_STREAM_FILE_INFO StreamFileInfo;
sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));
CFile destFile(StreamFileInfo.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);

UINT dwRead = 0;
while(dwRead)
{
byte* data = new byte[1024];
memset(data,0,1024);

UINT dw=sockClient.Receive(data, 1024);
destFile.Write(data, dw);

dwRead+=dw;
}

SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,
&StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);
destFile.Close();
SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);
sockClient.Close();
AfxMessageBox("接收完畢!");

return nRetCode;
}

另外一個程序輸入:
// client.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "client.h"
#include <afxsock.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// The one and only application object

CWinApp theApp;

using namespace std;

typedef struct _SOCKET_STREAM_FILE_INFO {

TCHAR szFileTitle[128]; //文件的標題名
DWORD dwFileAttributes; //文件的屬性
FILETIME ftCreationTime; //文件的創建時間
FILETIME ftLastAccessTime; //文件的最後訪問時間
FILETIME ftLastWriteTime; //文件的最後修改時間
DWORD nFileSizeHigh; //文件大小的高位雙字
DWORD nFileSizeLow; //文件大小的低位雙字
DWORD dwReserved0; //保留,為0
DWORD dwReserved1; //保留,為0

} SOCKET_STREAM_FILE_INFO, * PSOCKET_STREAM_FILE_INFO;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// initialize MFC and print and error on failure
if (!AfxWinInit(::GetMoleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
CString strHello;
strHello.LoadString(IDS_HELLO);
cout << (LPCTSTR)strHello << endl;
}

CFile myFile;
CString filename="123.txt";
if(!myFile.Open(filename, CFile::modeRead | CFile::typeBinary))
{
AfxMessageBox("文件不存在!",MB_OK|MB_ICONERROR);
return 0;
}
CSocket sockSrvr;
sockSrvr.Create(800);

sockSrvr.Listen();
CSocket sockRecv;
sockSrvr.Accept(sockRecv);
SOCKET_STREAM_FILE_INFO StreamFileInfo;
WIN32_FIND_DATA FindFileData;

FindClose(FindFirstFile(filename,&FindFileData));
memset(&StreamFileInfo,0,sizeof(SOCKET_STREAM_FILE_INFO));
strcpy(StreamFileInfo.szFileTitle,myFile.GetFileTitle());

StreamFileInfo.dwFileAttributes = FindFileData.dwFileAttributes;
StreamFileInfo.ftCreationTime = FindFileData.ftCreationTime;
StreamFileInfo.ftLastAccessTime = FindFileData.ftLastAccessTime;
StreamFileInfo.ftLastWriteTime = FindFileData.ftLastWriteTime;
StreamFileInfo.nFileSizeHigh = FindFileData.nFileSizeHigh;
StreamFileInfo.nFileSizeLow = FindFileData.nFileSizeLow;
sockRecv.Send(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));

UINT dwRead=0;
while(dwRead)
{
byte* data = new byte[1024];
UINT dw=myFile.Read(data, 1024);
sockRecv.Send(data, dw);
dwRead+=dw;
}
myFile.Close();
sockRecv.Close();
AfxMessageBox("發送完畢!");

return nRetCode;
}

現在應該可以運行了,然後根據你的需要修改

㈣ vc++網路編程中如何應用socket實現跨網段文件傳輸

不同網段間傳送數據不是應用層需要考慮的問題。應當交給網路層解決。也就是看看你的路由設置是否正確。如果你從A機器 PING B機器不通的話,你的程序也是沒辦法傳送數據的。

㈤ vc++區域網信息,文件傳輸

就是通過socket,CFileDialog來傳就行了。

閱讀全文

與網路文件傳輸vc相關的資料

熱點內容
確認全血細胞減少看哪些數據 瀏覽:265
文件有哪些要求 瀏覽:484
cad打開時會出現兩個文件 瀏覽:65
什麼是轉基因網站 瀏覽:48
手柄設備有問題代碼43 瀏覽:921
怎麼他么怎麼又網路了 瀏覽:649
java會出現內存泄露么 瀏覽:617
蘋果4s鎖屏後怎麼還顯示歌曲 瀏覽:207
鴻蒙系統文件管理哪些可以刪除 瀏覽:550
ubuntuqt創建工程沒有配置文件 瀏覽:126
網站登錄變成其他網站怎麼處理 瀏覽:202
ug數控編程學校有哪些 瀏覽:203
java圖片上傳顯示 瀏覽:402
ppt的文件名後綴 瀏覽:902
ug編程軟體下載到哪個盤 瀏覽:359
炫酷字體APP下載的文件在哪裡 瀏覽:668
廊坊哪裡有少兒編程機構 瀏覽:312
cad新文件能找回來嗎 瀏覽:951
導出手機qq文件到u盤 瀏覽:456
電腦如何打開ppt文件怎麼打開方式 瀏覽:782

友情鏈接