-
大小: 8.12MB文件類型: .rar金幣: 2下載: 0 次發布日期: 2023-10-07
- 語言: 其他
- 標簽:
資源簡介
socket網絡編程,可以實現聊天系統,還可以傳輸文件

代碼片段和文件信息
//?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//關于此宏的定義,見server1項目。
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
//參數是:“可下載文件列表”List控件中當前列表項的索引。
cdownload::cdownload(int?thno1)
{
m_fname=“zm.zip“;
m_index=-1;
doinfo.totle=0;
doinfo.threadno=thno1;
}
cdownload::~cdownload()
{
}
//在開始傳送之前,向服務器發出“獲得可下載文件列表”的命令,以便讓客戶端知道有哪些文件可下載。?
//經過我的搜索,我發現,原來這個函數是個作廢了的東西,根本就沒用到呀?!!!
int?cdownload::sendrequest(int?n)
{
//獲取服務器信息
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函數的第三個參數的默認值是0,表示由程序本身根據地址格式和套接字類型,自動選擇一個合適的協議。
m_socket=socket(AF_INETSOCK_STREAM0);
int?ret;
//聯接服務器
ret=connect(m_socket(LPSOCKADDR)&localsizeof(local));
//有錯的話
if(ret<0)
{
AfxMessageBox(“聯接錯誤“);
closesocket(m_socket);
return?-1;
}
//初使化命令
fileinfo?fileinfo1;
fileinfo1.len=n;
fileinfo1.seek=50;
fileinfo1.type=1;
//發送命令
int?aa=sendn(m_socket(char*)&fileinfo1100);
if(aa<0)
{
closesocket(m_socket);
return?-1;
}
//接收服務器傳來的信息
aa=readn(m_socket(char*)&fileinfo1100);
if(aa<0)
{
closesocket(m_socket);
return?-1;
}
//關閉
shutdown(m_socket2);
closesocket(m_socket);
return?1;
}
//下面是真正執行下載文件操作的函數是本程序中最最核心的東西了!!!
//參數是:cdownload類的m_index成員的值,用來作為filerange和good數組的下標,還用來作為
//輔助文件的文件名后綴的最后一個字符。
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函數的第三個參數的默認值是0,表示由程序本身根據地址格式和套接字類型,自動選擇
//一個合適的協議。
m_socket=socket(AF_INETSOCK_STREAM0);
int?ret;
//創建一個“讀入緩沖區”,大小是20
char*?m_buf=new?char[SIZE];
//remanent中放的是:要下載的這一段文件中,還沒有被下載的字節數,也就是剩余的字節數。
int?remanentlen2;
fileinfo?fileinfo1;
//連接服務器端。
ret=connect(m_socket(LPSOCKADDR)&localsizeof(local));
//讀入此線程的下載信息。
fileinfo1.seek=filerange[index*2];//在文件中seek的位置。
fileinfo1.len=filerange[index*2+1];//要下載的這一段文件的長度。
remanent=fileinfo1.len;
//發給服務器端的信息中,type=2,表示要求下載文件中的一段。(目前,服務器能識別的type的類型只有0和2這兩種)
fileinfo1.type=2;
//這個字段,大概是“可下載文件列表”中的索引,可以用作對應的數組的下標。
fileinfo1.fileno=doinfo.threadno;
//destination??n.目的地(目標指定)
CFile?des
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????......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個文件信息
評論
共有 條評論