導航:首頁 > 編程大全 > 網路文件傳輸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相關的資料

熱點內容
微信聊天記錄默認存在哪個文件夾 瀏覽:252
張孝祥java郵件開發詳解 瀏覽:431
財政保障水平分析取哪個數據 瀏覽:391
linux下增加路由命令 瀏覽:419
iphone沖刷固件 瀏覽:604
網路機房平面圖 瀏覽:579
筆記本電腦卡慢怎麼處理win10 瀏覽:77
編程模擬用什麼軟體 瀏覽:424
數控編程到哪裡找工作 瀏覽:48
ps濾鏡液化膨脹工具 瀏覽:426
一張表的數據比例是多少 瀏覽:497
微信綁不了交行信用卡嗎 瀏覽:86
泰住建201764號文件內容 瀏覽:23
Excel管理文件夾 瀏覽:427
步進編程式控制制器如何設置密碼 瀏覽:43
郵件預覽能打開壓縮文件嗎 瀏覽:615
ps怎麼輸出透明背景的mp4文件 瀏覽:930
廣安哪裡學習數控編程 瀏覽:899
哪些公司好進行數據分析 瀏覽:965
被淘汰的網路熱詞有哪些 瀏覽:956

友情鏈接