• 大小: 8.12MB
    文件类型: .rar
    金币: 1
    下载: 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个文件信息

评论

共有 条评论

相关资源