freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

tcp文件傳輸程序設(shè)計(jì)書-免費(fèi)閱讀

  

【正文】 }void CTcpDlg::OnBUTTONRecv() { (m_strFileName)。 } SendFile(m_strFileName,iEnd)。 BrowserDlg = new CFileDialog(TRUE)。 CString strTemp。 AfxMessageBox(文件傳輸完畢!)。 (正在發(fā)送文件,已發(fā)送:%lfK字節(jié),dNum)。 CSave Save。 return(0)。 *wNum = 。 delete m_pBasicFile。 delete m_pBasicFile。 ServerClient = 0。 return FALSE。 iEnd = 2。 (%d.%d.%d.%d,a1,a2,a3,a4)。 m_pTransSocket = NULL。 m_pListenSocket = NULL。 m_pArchiveOut = new CArchive(m_pFile, CArchive::store,256*1024)。 m_pListenSocket = NULL。}void CTcpDlg::ProcessAccept() //應(yīng)答客戶端的連接請(qǐng)求{ m_pTransSocket = new CTransSocket(this)。 (FALSE)。 (TRUE)。 } else if (SendOrRecv == 2) { (TRUE)。 (TRUE)。 (TRUE)。 }void CTcpDlg::JudgeButton() //不時(shí)地調(diào)整各按鈕的狀態(tài){ if(m_pListenSocket == NULL amp。 delete m_pFile。 delete m_pListenSocket。 m_pArchiveOut = NULL。 afx_msg void OnBUTTONRecv()。 // standard constructor virtual ~CTcpDlg()。 void ProcessRecv()。 //用于存儲(chǔ)文件名 int SendOrRecv。Bbuf[i], m_WNum i) + i。 ar m_WNum。 //以。 public: CSave()。}void CTransSocket::OnReceive(int nErrorCode) //當(dāng)收到發(fā)送 //端發(fā)送的數(shù)據(jù)時(shí)執(zhí)行的代碼。 { CSocket::OnAccept(nErrorCode)。在這里要感謝老師對(duì)我的悉心指導(dǎo),您辛苦了!六、程序源代碼建立服務(wù)器偵聽套接字的類CListenSocket的定義與實(shí)現(xiàn)定義部分:class CListenSocket : public Csocket//該類用于服務(wù)器端的偵聽{public: CTcpDlg *m_pSendDlg。接收端操作同數(shù)據(jù)的傳輸必須同步,即必須確保在接收數(shù)據(jù)時(shí),應(yīng)確保數(shù)據(jù)已經(jīng)傳送到了接收端,也就是防止因?yàn)閿?shù)據(jù)為傳送過(guò)來(lái)而導(dǎo)致的接收失敗。我在程序中采用了通過(guò)重載CObject類中的Serialize()的方式,具體做法是:從文件中讀取文件數(shù)據(jù)存入數(shù)組,利用CArchive的重載運(yùn)算符 ,將數(shù)組數(shù)據(jù)讀入內(nèi)存,而存數(shù)據(jù)過(guò)程與其相反。Socket的文件化管理在大多數(shù)編程環(huán)境和編程語(yǔ)言中大多把socket看作一個(gè)特殊的文件,其傳輸過(guò)程就可以看作是對(duì)文件的讀寫操作。程序流程示意圖如下:Socket()Bind()Listen()Accept()Socket()Connect()Send()/recv()Closesocket()Send()/recv()Closesocket()b、采用VC++中提供的MFC類,CAsyncSocket或CSocket.兩個(gè)類都對(duì)WinSocket API進(jìn)行了封裝,CSocket對(duì)它的封裝比CAsyncSocket更深,使得對(duì)于從未接觸過(guò)WinSockets API的編程程序員,也能夠編寫網(wǎng)絡(luò)程序。簡(jiǎn)單地說(shuō),如果一個(gè)主機(jī)向另外一臺(tái)主機(jī)發(fā)送數(shù)據(jù),這一數(shù)據(jù)就會(huì)立即發(fā)出,而不管另外一臺(tái)主機(jī)是否已準(zhǔn)備接收數(shù)據(jù)。 一個(gè)程序既能夠建立服務(wù)器又能夠以終端的形式連接服務(wù)器。應(yīng)用程序利用TCP進(jìn)行通信時(shí),源和目標(biāo)之間會(huì)建立一個(gè)虛擬連接。通過(guò)此套接字描述符調(diào)用send()或recv()函數(shù)即可與客戶端進(jìn)行數(shù)據(jù)收發(fā)。為了解決緩沖問(wèn)題,VC++添加了CArchive類,CArchive類專門用來(lái)管理一塊內(nèi)存單元,其大小可以自己來(lái)定義。應(yīng)該注意的是雖然CSocketFile類直接從CFile類中派生過(guò)來(lái),但CFile類中的一些函數(shù)CSocket是不能調(diào)用的,如果調(diào)用,系統(tǒng)便會(huì)返回錯(cuò)誤。在編寫過(guò)程中,收獲頗豐。所幸的是這些問(wèn)題都在參考資料和老師的幫助下得到了解決。}。public: virtual void OnReceive(int nErrorCode)。}用于數(shù)據(jù)串行化的類CSave的定義與實(shí)現(xiàn):定義部分:class CSave : public CObject{public: WORD m_WEnd。}。}void CSave::Serialize(CArchive amp。 ar m_WEnd。 CArchive *m_pArchiveIn。 //Server1,Client2 int iEnd。 void JudgeButton()。 afx_msg void OnBUTTONBrowser()。 m_pTransSocket = NULL。}CTcpDlg::~CTcpDlg(){ if (m_pAutoProxy != NULL) m_pAutoProxym_pDialog = NULL。 delete m_pArchiveOut。 JudgeButton()。 (TRUE)。 (FALSE) (FALSE)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1