-
大小: 8.12MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-10-07
- 語言: 其他
- 標(biāo)簽:
資源簡(jiǎn)介
socket網(wǎng)絡(luò)編程,可以實(shí)現(xiàn)聊天系統(tǒng),還可以傳輸文件

代碼片段和文件信息
//?cdownload.cpp:?implementation?of?the?cdownload?class.
//
//////////////////////////////////////////////////////////////////////
//*************************************************************
//作者:趙明
//EMAIL:zmpapaya@hotmail.com;papaya_zm@sina.com
//主頁:http://h2osky.126.com
/********************************************************/
#include?“stdafx.h“
#include?“client1.h“
#include?“cdownload.h“
#include?“MainFrm.h“
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
#define?SERVER_PORT?3962
#define?SIZE_OF_zmfile?1080//關(guān)于此宏的定義,見server1項(xiàng)目。
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
//參數(shù)是:“可下載文件列表”List控件中當(dāng)前列表項(xiàng)的索引。
cdownload::cdownload(int?thno1)
{
m_fname=“zm.zip“;
m_index=-1;
doinfo.totle=0;
doinfo.threadno=thno1;
}
cdownload::~cdownload()
{
}
//在開始傳送之前,向服務(wù)器發(fā)出“獲得可下載文件列表”的命令,以便讓客戶端知道有哪些文件可下載。?
//經(jīng)過我的搜索,我發(fā)現(xiàn),原來這個(gè)函數(shù)是個(gè)作廢了的東西,根本就沒用到呀?!!!
int?cdownload::sendrequest(int?n)
{
//獲取服務(wù)器信息
sockaddr_in?local;
//建套接字
SOCKET?m_socket;
int?rc=0;
//初使化服務(wù)器地址
local.sin_family=AF_INET;
local.sin_port=htons(SERVER_PORT);
local.sin_addr.S_un.S_addr=inet_addr(g_csIP);
//socket函數(shù)的第三個(gè)參數(shù)的默認(rèn)值是0,表示由程序本身根據(jù)地址格式和套接字類型,自動(dòng)選擇一個(gè)合適的協(xié)議。
m_socket=socket(AF_INETSOCK_STREAM0);
int?ret;
//聯(lián)接服務(wù)器
ret=connect(m_socket(LPSOCKADDR)&localsizeof(local));
//有錯(cuò)的話
if(ret<0)
{
AfxMessageBox(“聯(lián)接錯(cuò)誤“);
closesocket(m_socket);
return?-1;
}
//初使化命令
fileinfo?fileinfo1;
fileinfo1.len=n;
fileinfo1.seek=50;
fileinfo1.type=1;
//發(fā)送命令
int?aa=sendn(m_socket(char*)&fileinfo1100);
if(aa<0)
{
closesocket(m_socket);
return?-1;
}
//接收服務(wù)器傳來的信息
aa=readn(m_socket(char*)&fileinfo1100);
if(aa<0)
{
closesocket(m_socket);
return?-1;
}
//關(guān)閉
shutdown(m_socket2);
closesocket(m_socket);
return?1;
}
//下面是真正執(zhí)行下載文件操作的函數(shù)是本程序中最最核心的東西了!!!
//參數(shù)是:cdownload類的m_index成員的值,用來作為filerange和good數(shù)組的下標(biāo),還用來作為
//輔助文件的文件名后綴的最后一個(gè)字符。
UINT?cdownload::threadfunc(long?index)
{
//初使化連接
sockaddr_in?local;
SOCKET?m_socket;
int?rc=0;
local.sin_family=AF_INET;
local.sin_port=htons(SERVER_PORT);
local.sin_addr.S_un.S_addr=inet_addr(g_csIP);
//socket函數(shù)的第三個(gè)參數(shù)的默認(rèn)值是0,表示由程序本身根據(jù)地址格式和套接字類型,自動(dòng)選擇
//一個(gè)合適的協(xié)議。
m_socket=socket(AF_INETSOCK_STREAM0);
int?ret;
//創(chuàng)建一個(gè)“讀入緩沖區(qū)”,大小是20
char*?m_buf=new?char[SIZE];
//remanent中放的是:要下載的這一段文件中,還沒有被下載的字節(jié)數(shù),也就是剩余的字節(jié)數(shù)。
int?remanentlen2;
fileinfo?fileinfo1;
//連接服務(wù)器端。
ret=connect(m_socket(LPSOCKADDR)&localsizeof(local));
//讀入此線程的下載信息。
fileinfo1.seek=filerange[index*2];//在文件中seek的位置。
fileinfo1.len=filerange[index*2+1];//要下載的這一段文件的長(zhǎng)度。
remanent=fileinfo1.len;
//發(fā)給服務(wù)器端的信息中,type=2,表示要求下載文件中的一段。(目前,服務(wù)器能識(shí)別的type的類型只有0和2這兩種)
fileinfo1.type=2;
//這個(gè)字段,大概是“可下載文件列表”中的索引,可以用作對(duì)應(yīng)的數(shù)組的下標(biāo)。
fileinfo1.fileno=doinfo.threadno;
//destination??n.目的地(目標(biāo)指定)
CFile?des
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
????......R?????19431??2003-02-17?21:52??P2P文件傳輸\client?1.1\cdownload.cpp
????......R??????2592??2003-02-17?20:20??P2P文件傳輸\client?1.1\cdownload.h
????......R??????1227??2002-10-25?17:23??P2P文件傳輸\client?1.1\chatbar.cpp
????......R??????1395??2002-10-25?17:23??P2P文件傳輸\client?1.1\chatbar.h
????......R?????51996??2003-02-17?17:01??P2P文件傳輸\client?1.1\client1.aps
????......R??????4254??2003-02-17?17:02??P2P文件傳輸\client?1.1\client1.clw
????......R?????10017??2005-12-06?10:31??P2P文件傳輸\client?1.1\Client1.cpp
????......R??????1380??2002-08-18?19:02??P2P文件傳輸\client?1.1\client1.dep
????......R??????5787??2003-02-07?13:15??P2P文件傳輸\client?1.1\client1.dsp
????......R???????537??2002-07-17?10:42??P2P文件傳輸\client?1.1\client1.dsw
????......R??????1978??2003-02-15?10:12??P2P文件傳輸\client?1.1\client1.h
????......R?????10680??2002-08-18?19:02??P2P文件傳輸\client?1.1\client1.mak
????......R????189440??2005-12-06?10:32??P2P文件傳輸\client?1.1\client1.ncb
?????文件??????50688??2011-04-05?23:30??P2P文件傳輸\client?1.1\client1.opt
????......R??????2174??2005-12-06?10:32??P2P文件傳輸\client?1.1\client1.plg
????......R?????16069??2005-12-06?10:31??P2P文件傳輸\client?1.1\client1.rc
????......R??????2944??2003-02-13?12:35??P2P文件傳輸\client?1.1\client1Doc.cpp
????......R??????1805??2002-10-25?17:15??P2P文件傳輸\client?1.1\client1Doc.h
????......R??????6406??2005-12-06?10:31??P2P文件傳輸\client?1.1\client1View.cpp
????......R??????2580??2003-02-13?19:29??P2P文件傳輸\client?1.1\client1View.h
????......R??????1342??2002-10-25?17:15??P2P文件傳輸\client?1.1\CntrItem.cpp
????......R??????1784??2002-10-25?17:15??P2P文件傳輸\client?1.1\CntrItem.h
?????文件??????32043??2011-04-05?23:23??P2P文件傳輸\client?1.1\Debug\cdownload.obj
?????文件??????????0??2011-04-05?23:23??P2P文件傳輸\client?1.1\Debug\cdownload.sbr
?????文件??????11231??2011-04-05?23:23??P2P文件傳輸\client?1.1\Debug\chatbar.obj
?????文件??????????0??2011-04-05?23:23??P2P文件傳輸\client?1.1\Debug\chatbar.sbr
?????文件????3515392??2011-04-05?23:23??P2P文件傳輸\client?1.1\Debug\client1.bsc
?????文件?????172113??2011-04-05?23:23??P2P文件傳輸\client?1.1\Debug\client1.exe
?????文件?????659052??2011-04-05?23:23??P2P文件傳輸\client?1.1\Debug\client1.ilk
?????文件??????36708??2011-04-05?23:23??P2P文件傳輸\client?1.1\Debug\client1.obj
............此處省略130個(gè)文件信息
評(píng)論
共有 條評(píng)論