Ⅰ 學visual c++網路編程技術哪本教材不錯應從何入手
那要看你現在是什麼水品了!你要是vc++還什麼都不會呢!建議你還是老老實實從c++基礎教程看起,然後vc++,學習網路編程技術有《vc++網路編程經典案例解析》,對於vc++學會的人來說學這個比較好些!網上還有不少關於網路編程類的書籍,自己去找吧。再次就不一一列舉!呵呵!
Ⅱ 求:visual c#網路編程 (鄭阿奇著)pdf
書名=Visual C#網路編程
作者=鄭阿奇主編
頁碼=405
ISBN=978-7-121-14646-6
出版社=北京:電子工業出版社 , 2011.10
附件已經上傳
Ⅲ C++ 實現 多媒體+網路編程,實現在線看視屏,或聽音樂的功能
《Visual C++網路編程經典案例詳解》由淺入深、循序漸進地向讀者介紹了Visual C++網路編程的基礎知識,並且在此基礎上講解了常見的Visual C++網路編程技術及典型應用案例,最終使讀者從根本上提高自身的編程水平,能夠獨立開發網路應用程序。《Visual C++網路編程經典案例詳解》內容包括網路編程基礎知識、Socket套接字編程基礎、多線程技術、FTP瀏覽器實常式序、網頁瀏覽器實常式序、網路通信器、郵件收發器、實用播放器、網路文件傳輸器、P2P網路播放器、Q版聊天軟體的實現、串口通信技術等。《Visual C++網路編程經典案例詳解》最後專門講解了如何用Visual C++實現發送手機簡訊的案例,其中具體講解了串口通信編程的實現方法、所需要的硬體設備以及數據封裝等知識。
《Visual C++網路編程經典案例詳解》配套光碟中提供了作者專門為《Visual C++網路編程經典案例詳解》錄制的多媒體語音教學視頻和《Visual C++網路編程經典案例詳解》所涉及的源代碼,這些源代碼都經過精心調試,在Windows XP和Windows 2003下測試通過。
《Visual C++網路編程經典案例詳解》適合廣大用Visual C++進行網路程序開發的人員和想進一步提升網路編程水平的人員閱讀,尤其適合具有一定C語言基礎和C++語言基礎的人員或大中專院校的學生閱讀。
Ⅳ 我想學c語言編程,請給我推薦些教材
您好 ,很高興回答您的問題。
就我個人而言,也接觸了很多版本的C語言的教材,基本上很多都差不多,都是圍繞發展史、數據類型和運演算法則、三種基本結構(順序、選擇、循環)、數組、函數、預處理命令、指針等等順序來講解的。個人建議您可以參考一下清華大學譚浩強教授的教材,這本教材被印刷了很多版,確實是很不錯的教材。另外您也可以在網上找一些比較好的網路視頻課進行學習,相關的軟體一般都是使用的VISUAL STUDIO C++這個軟體,您可以去試試哦。有不懂的也可以相互討論。
以上就是我的回答,希望能幫助到您。不當之處,敬請批評指正。
Ⅳ 網路編程軟體 visual c 32位 WIN7的最新版本
1、用 Visual Studio 2010 旗艦版,它是專為Win7打造的,其他的版本也可以兼容,而且支持VC/VB/C#多種語言開發,安裝下來才2G多,是一款相當不錯的開發軟體。
2、用開發版的比較好,學習版的有些功能減掉了。
3、eclipseCDT也可以。純綠色軟體,解壓縮就能用。完美支持win7。
4、學一門語言最好的方式就是 記事本+編譯器。什麼東西都要自己手寫。這樣映像才深。學的才透。
5、Visual Studio(VS) 是一套完整的開發工具集,用於生成 ASP.NET Web 應用程序、XML Web Services、桌面應用程序和移動應用程序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成開發環境 (IDE),利用此 IDE 可以共享工具且有助於創建混合語言解決方案。另外,這些語言利用了 .NET Framework 的功能,通過此框架可使用簡化 ASP Web 應用程序和 XML Web Services 開發的關鍵技術。
Ⅵ 誰能推薦一本C#的網路編程書籍
可以在網上找天轟穿的視頻教程,講的很詳細,完全是C#的網路編程視頻,主要運用的是visual studio 2005,對於盡快上手做項目的非常有用
Ⅶ visual c++ 網路編程(開發與實戰)源碼
推薦一本書:《Visual C++ 網路編程經典案例詳解》,清華大學出版社,裡面有很多網路編程案例,附帶詳細解釋說明。非常適合初學網路編程的學子們。
你可以去網上下載電子版,找不到的話,給我發一封郵件,我傳給你。[email protected]
Ⅷ 求助網路編程題目.C++
一.概述
TCP/IP協議是一個四層協議,它由應用層、傳輸層、網路層和鏈路層構成。TCP/IP協議棧的每一層都由許多協議構成,從而構成了一個協議簇。
應用層主要包括的協議有Telnet、FTP、HTTP、SMTP/POP3和DNS等。
傳輸層主要包括的協議有TCP和UDP。
網路層主要包括IP和IP的附屬協議。
數據鏈路層主要包括的協議有ARP(地址解析協議)、RARP協議、Ethernet協議等。
FTP(File Transfer Protocol)協議主要用來在網路上進行文件傳輸。FTP通訊除了有一個默認的埠21外,還有其他埠,同城兩個埠同時進行數據傳輸。一個是默認的埠(通常為21),主要進行控制連接,即進行命令協議及伺服器端響應碼的傳輸。另一個非標准埠主要進行數據,上傳下載文件等。
關於FTP協議和FTP命令的詳細描述,參考《Visual C 網路通信編程實用案例精選》。
實現FTP協議,有兩種方式,實用WinInet API和使用基本Winsock。對於一般應用,用WinInet效率要高,而且簡單。也可以用Winsock來編寫,這樣更加靈活,但是復雜度高且需要對協議非常熟悉。
二.VC開發
在項目中,為了開發效率,使用了WinInet的方式。
FTP是MFC的WinInet支持的三個Internet功能(HTTP, gopher)之一,我們需要先創建一個CInternetSession實例和一個CFtpConnection對象就可以實現和一個 FTP伺服器的通信。不需要直接創建CFtpConnection對象,而是通過調用CInternetsession::GetFtpConnection來完成這項工作。它創建CFtpConnection對象並返回一個指向該對象的指針。
要聯接到FTP伺服器,需要兩個步驟,首先必須創建一個CInternetSession對象,用類CInternetSession創建並初始化一個或幾個同時存在的Internet會話(session),並描述與代理伺服器的連接(如果有必要的話),如果在程序運行期間需要保持與Internet的連接,可以創建一個CInternetsession對象作為類CWinApp的成員。
然後利用CInternetsession對象獲取CFtpConnection對象。MFC中的類CFtpConnection管理我們與Internet伺服器的連接,並直接操作伺服器上的目錄和文件。
1.Ftp連接類的信息
下面我們簡要介紹連接類的信息
1.1 建立連接
CInternetsession對象
CInternetsession(LPCTSTR pstrAgent, DWORD dwConText, DWORD dwACCESSType, LPCTSTR pstrProxyName, LPCTSTR pstrProxyBypass, DWORD dwFlags);
在創建CInternetSession對象時調用這個成員函數,CInternetsession是應用程序第一個要調用的Internet函數,它將創始化內部數據結構,以備將來在應用程序中調用。如果dwFlags包含INTERNET_FLAG_ASYNC,那末從這個句柄派生的所有的句柄,在狀態回調常式注冊之前,都會出現非同步狀態。如果沒有打開Internet連接,CInternetsession就會拋出一個例外,AfxThrowInternetException。
GetFtpConnection()函數
CFtpConnection* CIternetsession::GetFtpConnection(LPCTSTR pstrServer, LPCTSTR pstrUserName, LPCTSTR pstrPassword, INTERNET_PORT nPort, BOOL bPassive);
調用這個函數建立一個FTP連接,並獲得一個指向CFtpConnection對象的指針,GetFtpConnection連接到一個FTP伺服器,創建並返回指向CFtpConnection對象的指針,它不在伺服器上進行任何操作。如果打算讀寫文件,必須進行分步操作。關於查找,打開和讀寫文件的信息需參考CFtpConnection和CFtpFileFind類。
對這個函數的調用返回一個指向CFtpConnection對象的指針。如果調用失敗,檢查拋出的CInternetException對象,就可以確定失敗的原因。
1.2 遠程目錄操作
CreateDirectory()函數
BOOL CreateDirectory( LPCTSTR pstrDirName );
Return Value
Nonzero if successful; otherwise 0. If the call fails, the Windows functionGetLastError may be called to determine the cause of the error.
Parameters
pstrDirName
A pointer to a string containing the name of the directory to create.
Remarks
Call this member function to create a directory on the connected server.
Use GetCurrentDirectory to determine the current working directory for this connection to the server. Do not assume that the remote system has connected you to the root directory.
The pstrDirName parameter can be either a partially or a fully qualified filename relative to the current directory. A backslash (\) or forward slash (/) can be used as the directory separator for either name. CreateDirectory translates the directory name separators to the appropriate characters before they are used.
注意:CreateDir 在FTP伺服器上創建已經存在的文件夾時會 返回FALSE,而且只能創建到當前(根)目錄下
RemoveDirectory()函數
BOOL RemoveDirectory( LPCTSTR pstrDirName );
Return Value
Nonzero if successful; otherwise 0. If the call fails, the Win32 functionGetLastError may be called to determine the cause of the error.
Parameters
pstrDirName
A pointer to a string containing the directory to be removed.
Remarks
Call this member function to remove the specified directory from the connected server.
Use GetCurrentDirectory to determine the server』s current working directory. Do not assume that the remote system has connected you to the root directory.
The pstrDirName parameter can be either a partially or fully qualified filename relative to the current directory. A backslash (\) or forward slash (/) can be used as the directory separator for either name. RemoveDirectory translates the directory name separators to the appropriate characters before they are used.
注意:DeleteDir文件夾中有內容,先刪除文件夾中文件,才可以刪文件夾,否則返回FALSE, 刪除不存在的文件夾返回FALSE
1.3 文件上傳下載刪除
GetFile()函數
BOOL GetFile(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile, BOOL bFailExists, DWORD dwAttributes, DWORD dwFlags, DWORD dwContext);
調用這個成員函數,可以從FTP伺服器取得文件,並且把文件保存在本地機器上。GetFile()函數是一個比較高級的常式,它可以處理所有有關從FTP伺服器讀文件,以及把文件存放在本地機器上的工作。如果dwFlags為 FILE_TRANSFER_TYPE_ASCII,文件數據的傳輸也會把控制和格式符轉化為Windows中的等階符號。默認的傳輸模式是二進制模式,文件會以和伺服器上相同的格式被下載。
pstrRemoteFile和 pstrLocalFile可以是相對於當前目錄的部分文件名,也可以是全文件名,在這兩個名字中間,都既可以用反斜杠(\)或者正斜杠(/)來作為文件名的目錄分隔符,GetFile()在使用前會把目錄分隔符轉化為適當的字元。
可以用自己選擇的值來取代dwContext默認的值,設置為上下文標識符與CFtpConnection對象的定位操作有關,這個操作由CFtpConnection中的CInternetSession對象創建。返回給CInternetsession::OnStatusCallBack的值指出了所標識操作的狀態。
如果調用成功,函數的返回為非0,否則返回0,如果調用失敗,可以調用Win32函數GetLastError(),確認出錯的原因。
需要注意:本地路徑須為絕對路徑,遠程路徑可為相對路徑,如hello/hello.zip,如果本地文件已經存在,則返回FALSE。
PutFile()函數
BOOL PutFile(LPCTSTR pstrLocalFile, LPCTSTR pstrRemoveFile ,DWORD dwFlags, DWORD dwContext);
調用這個成員函數可以把文件保存到FTP伺服器。PutFile()函數是一個比較高級的常式,它可以處理有關把文件存放到伺服器上的工作。只發送數據,或要嚴格控制文件傳輸的應用程序,應該調用OpenFile和 CInternet::Write。利用自己選擇的值來取代dwContext默認的值,設置為上下文標識符,上下文標識符是 CInternetSession對象創建的CFtpConnection對象的特定操作有關,這個值返回給CInternetsession::OnStateCallBack,從而把操作的狀態通報給它所標識的上下文。
如果調用成功,函數的返回為非0,否則返回0,如果調用失敗,可以調用Win32函數GetLastError(),確認出錯的原因。
主要注意:如果重復上傳文件,會把伺服器上的文件覆蓋掉,且可以上傳特定文件夾下,如hello/hello.zip
Remove()函數
BOOL Remove( LPCTSTR pstrFileName );
如果調用成功,函數的返回為非0,否則返回0,如果調用失敗,可以調用Win32函數GetLastError(),確認出錯的原因。
pstrFileName
需要刪除的伺服器上的文件名
Call this member function to delete the specified file from the connected server.
The pstrFileName parameter can be either a partially qualified filename relative to the current directory or fully qualified. A backslash (\) or forward slash (/) can be used as the directory separator for either name. The Remove function translates the directory name separators to the appropriate characters before they are used.
注意:Remove如果刪除的文件不存在,則返回FALSE,支持相對路徑
2. 測試實例
2.1 例一 連接到FTP站點
建立連接到ftp.microsoft.com的程序,它是一個單文檔程序。並且連接由視圖類的構造函數完成。
建立單文檔程序ftp
在ftpview.h中加入包含#include < afxinet.h >
在ftpview.h中添加如下的成員變數
public:
CInternetSession *m_pInetsession;
CFtpConnection *m_pFtpConnection;
在ftpview.cpp中的ftpview構造函數中加入下面的代碼
CFtpView::CFtpView()
{
m_pInetSession=new CInternetsession
(AfxGetAppName(),1,
PRE_CONFIG_INTERNET_ACCESS);
try
{
m_pFtpConnection=m_pInetsession->
GetFtpConnection("FTP.MICROSOFT.COM");
}
catch(CInternetException *pEx)
{
TCHAR szError[1024];
if(pEx->GetErrorMessage(szError,1024))
AfxMessageBox(szError);
else
AfxMessageBox("There was an exception");
pEx->Delete();
m_pFtpConnection=NULL;
}
}
在ftpview.cpp中的ftpview析構函數中加入下面的代碼
CFtpView::~CFtpView()
{
if(m_pFtpConnection!=NULL)
{
m_pFtpConnection->Close();
delete m_pFtpConnection;
}
delete m_pInetsession;
}
編譯並且執行程序,如果連接出現問題,將會在一個消息框中報告出錯消息。
2.2 例二 發送文件到FTP文件伺服器
創建一個發送文件到FTP文件伺服器的程序
建立單文檔程序ftpfw, 在ftpfwview.h中加入包含 #include < afxinet.h >
在ftpfwview.h中添加如下的成員變數
public:
bool m_bConnectionAttempted;
int m_nFileStatus;
在ftpview.cpp中的ftpview構造函數中加入下面的代碼
CFtpfwView::CFtpfwView()
{
m_bConnectionAttempted=false;
}
使用ClassWizard加入新的類CFtpThread,該類派生於CWinThread 在ftpthread.h中加入如下變數
public:
static UINT PutFile(LPVOID Status);
添加新類成員函數代碼
UINT CFtpThread::PutFile(LPVOID Status)
{
int *pnFileStatus;
CInternetSession *pInetsession;
CFtpConnection *pFtpConnection=NULL;
pnFileStatus=(int *)Status;
*pnFileStatus=0;
pInetsession=new CInternetsession(AfxGetAppName(),1,
PRE_CONFIG_INTERNET_ACCESS);
try
{
pFtpConnection=pInetsession->
GetFtpConnection("192.34.45.0");
}
catch(CInternetException *pEx)
{
pEx->Delete();
pFtpConnection=NULL;
*pnFileStatus=-1;
goto BallOut;
}
*pnFileStatus =1;
pFtpConnection->Remove("test.txt");
if(!pFtpConnection->PutFile
("test.txt","test.txt"))
*pnFileStatus=-2;
else
*pnFileStatus=2;
BallOut:
if(pFtpConnection!=NULL)
{
pFtpConnection->Close();
delete pFtpConnection;
}
delete pInetsession;
AfxEndThread(0);
return false;
}
編輯ftpfwview.cpp中的OnDraw()函數
void CFtpfwView::OnDraw(CDC* pDC)
{
CFtpfwDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(!m_bConnectAttempted)
{
m_bConnectAttempted=TRUE;
AfxBeginThread((AFX_THREADPROC)
CFtpThread::PutFile,&m_nFileStatus);
}
}
編譯並且執行程序,在連接和傳輸的過程中,應用程序仍然可以作自己的工作,這是因為傳輸的過程發生在線程中。
3.封裝FTPTransfer類
3.1 頭文件
///////////////////////////////////////////////////////////
// FTPTransfer.h
// interface of the FTPTransfer mole
// Created on: 24-July-2010
// Original author: Andrew Zhang
///////////////////////////////////////////////////////////
#ifndef _FTPTRANSFER_H_
#define _FTPTRANSFER_H_
#include <afxinet.h> // for ftp api functions
class FTPTransfer
{
public:
FTPTransfer();
~FTPTransfer();
BOOL Login();
void Logout();
BOOL CreateRemoteDir(LPCTSTR pstrDirName);
BOOL DeleteRemoteDir(LPCTSTR pstrDirName);
BOOL Upload(LPCTSTR pstrLocalFile, LPCTSTR pstrRemoteFile);
BOOL Download(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile);
BOOL DeleteRemoteFile(LPCTSTR pstrFileName);
BOOL UploadAll();
CString GetLastError();
protected:
private:
void Config();
CString m_csServer;
CString m_csUsername;
CString m_csPassword;
unsigned int m_nPort;
CInternetSession *m_pSession;
CFtpConnection *m_pConn;
static CString lastError;
public:
// 需要傳輸的文件夾
CStringArray m_astrAllDirName;
CString m_csLocalDir; // 本地圖像所在路徑,需要外界賦值。
};
#endif
3.2 設置配置項
可以配置伺服器的IP,Port,用戶名,密碼等
配置項樣例:
[FTPTransfer]
FTPServer = 192.168.29.253
Username = andrew
Password = zhang
Port = 21
;Ftp伺服器的IP 賬戶 密碼
3.3 使用說明
FTPTransfer transfer;
transfer.m_csLocalDir = url + strImgNo.c_str();
transfer.m_astrAllDirName.Add(csImgNo);
try
{
if (!transfer.UploadAll())
{
CString strlog(_T("[threadOperationTransfer]: "));
ServiceLog.write_log("[threadOperationTransfer]: ERROR! Upload error.");
CString csError = transfer.GetLastError();
ServiceLog.write_log((LPCWSTR)(strlog+ csError));
return -1; // FTP Error;
}
}
catch (...)
{
CString strlog(_T("[threadOperationTransfer]: "));
ServiceLog.write_log("[threadOperationTransfer]: ERROR! upload except:");
CString csError = transfer.GetLastError();
ServiceLog.write_log((LPCWSTR)(strlog+ csError));
return -1;
}
三.總結
通過以上的程序我們可以明白FTP的工作原理,因為基於應用,解釋的還比較淺顯。另外上傳和下載需要比較久的時間,可以考慮設計多線程的方式來實現,這樣不至於程序阻塞。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/loadstar_kun/archive/2010/08/06/5790288.aspx