⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filesend1dlg.cpp

📁 用VC++实现的
💻 CPP
📖 第 1 页 / 共 5 页
字号:

			     rewind(m_pSourceFile3[w]);//文件指针回到开头

			     m_PacketSerialNum3=0;//将“当前传送包(m_PacketSerialNum)”的值复0,重新计数

                 j++;//整个文件已经发送完,“已发送次数”的值加1	
			
			}        
		
		//--------------------------------------------------------------------------
		    m_pSendSocket3->SendTo(buffer3,L+50,7003,"222.196.33.77",0);
	                             	//上句的作用是:  使用VC++6.0中已经集成的CSocket类调用,
	                                //用SendTo()函数向指定目的地发送数据
		//这里我作一个比较详细的解释:
		//第一个参数buffer          :包含待发送数据的缓冲区
		//第二个参数L+50            :缓冲区的长度
		//第三个参数m_SendTo_Port
		//第四个参数m_SendTo_Ip     :指向目的套接字的地址(IP加端口号)
		//第五个参数0               :套接字类型(数据包式SOCK_DGRAM)
		    ::Sleep(100);
		//-----------------------------------------------------------------------------		
		    if(bStop3)//如果进程停止
			{
				if(m_pSendSocket3)//如果发送套接字m_pSendSocket还有效
					delete m_pSendSocket3;//删除发送套接字m_pSendSocket

			    m_pSendSocket3=NULL;//复原

			    if(m_pSourceFile3[w])//如果源文件还处于打开状态

				    fclose(m_pSourceFile3[w]);//关闭源文件

			    return 0;//函数返回0值
			}
		}//“while(true){………;}”的范围到此结束
		
//		::Sleep(10000);
	}
	}
}
UINT SourceFile4(LPVOID param)
{
	long w,j,k;
	//::PostMessage((HWND)param,WM_GETPORT,0,0);
		m_pSendSocket4=new CSocket();//发送套接字指向一个新的套接字
		if(!m_pSendSocket4->Create(7004+1000,SOCK_DGRAM))
		{
			::PostMessage((HWND)param,WM_SOCKET4WRONG,0,0);//如果创建套接字失败,
	           	//则调用::OnSocketWrong(WPARAM wParam,LPARAM lParam)程序,返回出错信息

		    return 0;//返回
		}
	while(true)
	{
	for(w=1;w<=numFileList4;w++)
	{
        //w=1;
		m_PacketSerialNum4=0;
		j=0;
		MidString4=filename4[w];
		if((m_pSourceFile4[w]=fopen(MidString4,"rb"))==NULL)
		{
			::PostMessage((HWND)param,WM_SOURCE4WRONG,0,0);//如果打不开此文件,
			//则调用::OnSourceWrong(WPARAM wParam,LPARAM lParam)程序,返回出错信息

			return 0;//返回
		}
		WIN32_FIND_DATA  FindFileData;
		FindClose(FindFirstFile(MidString4,&FindFileData));//根据文件的路径名MidString查找源文件的信息,
                                                          //并把结果放到FindFileData中
		k=FindFileData.nFileSizeLow;
		m_PacketTotalNum4=k/L+1;
		memcpy(buffer4+L+4,&m_PacketTotalNum4,4);
		long i,l;
		filename_temp4[w]=FindFileData.cFileName;
		//while(true)//一直执行
		for(l=0;l<m_PacketTotalNum4;l++)
		{
            ::PostMessage((HWND)param,WM_SENDSERIAL4,0,0);
			for(i=0;i<L && !feof(m_pSourceFile4[w]);i++)
				buffer4[i]=fgetc(m_pSourceFile4[w]);
			memcpy(buffer4+L,&i,4);
			memcpy(buffer4+L+8,&m_PacketSerialNum4,4);//将“当前传送包(m_PacketSerialNum)”的值写到
	                  	                            //缓冲区中L+8开始的存储单元,占用空间与上面的m_PacketTotalNum一样,
		                                            //为4个字节
//		    if(w==0)
//				y=0;
//			else
//				y=1;
//			else
//				y=0x0000000C;
			int fileid;
			fileid=w-1;
			memcpy(buffer4+L+13,&fileid,4);
			//AfxMessageBox(buffer+L+12);
			//memcpy(buffer+L+12,&w,4);
//			sprintf(buffer+L+16,"%s",filename_temp[w]);
			
			memcpy(buffer4+L+19,filename_temp4[w],31);
	//		AfxMessageBox(buffer+L+19);

		    m_PacketSerialNum4++;//发送完一个数据包,“当前传送包(m_PacketSerialNum)”的值加1
        
		    if(feof(m_pSourceFile4[w]))//如果检测到文件已经结束(已经发送完)
			{
			     i--;//i(实际收到的字节数)自减,
		             //因为前面的“for(i=0;i<L && !feof(m_pSourceFile);i++)”
			         //在不知道文件是否已经结束的情况下,已经多加了一次

			     memcpy(buffer4+L,&i,4);//将i的值写到缓冲区中L开始的存储单元中,占用空间为4个字节

			     rewind(m_pSourceFile4[w]);//文件指针回到开头

			     m_PacketSerialNum4=0;//将“当前传送包(m_PacketSerialNum)”的值复0,重新计数

                 j++;//整个文件已经发送完,“已发送次数”的值加1	
			
			}        
		
		//--------------------------------------------------------------------------
		    m_pSendSocket4->SendTo(buffer4,L+50,7004,"222.196.33.73",0);
	                             	//上句的作用是:  使用VC++6.0中已经集成的CSocket类调用,
	                                //用SendTo()函数向指定目的地发送数据
		//这里我作一个比较详细的解释:
		//第一个参数buffer          :包含待发送数据的缓冲区
		//第二个参数L+50            :缓冲区的长度
		//第三个参数m_SendTo_Port
		//第四个参数m_SendTo_Ip     :指向目的套接字的地址(IP加端口号)
		//第五个参数0               :套接字类型(数据包式SOCK_DGRAM)
		    ::Sleep(100);
		//-----------------------------------------------------------------------------		
		    if(bStop4)//如果进程停止
			{
				if(m_pSendSocket4)//如果发送套接字m_pSendSocket还有效
					delete m_pSendSocket4;//删除发送套接字m_pSendSocket

			    m_pSendSocket4=NULL;//复原

			    if(m_pSourceFile4[w])//如果源文件还处于打开状态

				    fclose(m_pSourceFile4[w]);//关闭源文件

			    return 0;//函数返回0值
			}
		}//“while(true){………;}”的范围到此结束
		
//		::Sleep(10000);
	}
	}
}
UINT SourceFile5(LPVOID param)
{
	long w,j,k;
	//::PostMessage((HWND)param,WM_GETPORT,0,0);
		m_pSendSocket5=new CSocket();//发送套接字指向一个新的套接字
		if(!m_pSendSocket5->Create(7005+1000,SOCK_DGRAM))
		{
			::PostMessage((HWND)param,WM_SOCKET5WRONG,0,0);//如果创建套接字失败,
	           	//则调用::OnSocketWrong(WPARAM wParam,LPARAM lParam)程序,返回出错信息

		    return 0;//返回
		}




		CString str1,str2;
        int strlen,strlen1;




	while(true)
	{
	for(w=1;w<=numFileList5;w++)
	{
        //w=1;
		m_PacketSerialNum5=0;
		j=0;
		
        

		MidString5=filename5[w];
		str1=MidString5;
       // AfxMessageBox(str1);
		strlen1=str1.ReverseFind('\\');
		strlen=str1.GetLength( );
		str1.Delete(strlen1+1,strlen-strlen1-1);
        //AfxMessageBox(str1);

			if(str1==cont1)
		{
			filecont=1;
		//	AfxMessageBox(str1);
		}
		else if(str1==cont2)
		{
			filecont=2;
		//	AfxMessageBox(str1);

		}
		else if(str1==file1)
		{
			filecont=6;
		//AfxMessageBox(str1);
		}
		else if(str1==file2)
		{
			filecont=7;
		//	AfxMessageBox(str1);
		}
		else
		{
			filecont=0;
			//AfxMessageBox(m_Fileaddr5);

		}



		
		if((m_pSourceFile5[w]=fopen(MidString5,"rb"))==NULL)
		{
			::PostMessage((HWND)param,WM_SOURCE5WRONG,0,0);//如果打不开此文件,
			//则调用::OnSourceWrong(WPARAM wParam,LPARAM lParam)程序,返回出错信息

			return 0;//返回
		}
		WIN32_FIND_DATA  FindFileData;
		FindClose(FindFirstFile(MidString5,&FindFileData));//根据文件的路径名MidString查找源文件的信息,
                                                          //并把结果放到FindFileData中
	
		
		k=FindFileData.nFileSizeLow;
		m_PacketTotalNum5=k/L+1;
		memcpy(buffer5+L+4,&m_PacketTotalNum5,4);
		long i,l;
		filename_temp5[w]=FindFileData.cFileName;
		//while(true)//一直执行
		for(l=0;l<m_PacketTotalNum5;l++)
		{
            ::PostMessage((HWND)param,WM_SENDSERIAL5,0,0);
			for(i=0;i<L && !feof(m_pSourceFile5[w]);i++)
				buffer5[i]=fgetc(m_pSourceFile5[w]);
			memcpy(buffer5+L,&i,4);
			memcpy(buffer5+L+8,&m_PacketSerialNum5,4);//将“当前传送包(m_PacketSerialNum)”的值写到
	                  	                            //缓冲区中L+8开始的存储单元,占用空间与上面的m_PacketTotalNum一样,
		                                            //为4个字节
//		    if(w==0)
//				y=0;
//			else
//				y=1;
//			else
//				y=0x0000000C;
			int fileid;
			fileid=w-1;
			memcpy(buffer5+L+13,&fileid,4);
			//AfxMessageBox(buffer+L+12);
			//memcpy(buffer+L+12,&w,4);
//			sprintf(buffer+L+16,"%s",filename_temp[w]);


/////////////////////////////////////////////////////////////////////////////////////////////////////////////


			//long x=11;
			memcpy(buffer5+L+17,&numFileList5,4);
            memcpy(buffer5+L+12,&filecont,1);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			//memcpy(buffer5+L+17,&x,4);
			memcpy(buffer5+L+19,filename_temp5[w],31);
	//		AfxMessageBox(buffer+L+19);

		    m_PacketSerialNum5++;//发送完一个数据包,“当前传送包(m_PacketSerialNum)”的值加1
        
		    if(feof(m_pSourceFile5[w]))//如果检测到文件已经结束(已经发送完)
			{
			     i--;//i(实际收到的字节数)自减,
		             //因为前面的“for(i=0;i<L && !feof(m_pSourceFile);i++)”
			         //在不知道文件是否已经结束的情况下,已经多加了一次

			     memcpy(buffer5+L,&i,4);//将i的值写到缓冲区中L开始的存储单元中,占用空间为4个字节

			     rewind(m_pSourceFile5[w]);//文件指针回到开头

			     m_PacketSerialNum5=0;//将“当前传送包(m_PacketSerialNum)”的值复0,重新计数

                 j++;//整个文件已经发送完,“已发送次数”的值加1	
			
			}        
		
		//--------------------------------------------------------------------------
		    m_pSendSocket5->SendTo(buffer5,L+50,7005,"222.196.33.74",0);
	                             	//上句的作用是:  使用VC++6.0中已经集成的CSocket类调用,
	                                //用SendTo()函数向指定目的地发送数据
		//这里我作一个比较详细的解释:
		//第一个参数buffer          :包含待发送数据的缓冲区
		//第二个参数L+50            :缓冲区的长度
		//第三个参数m_SendTo_Port
		//第四个参数m_SendTo_Ip     :指向目的套接字的地址(IP加端口号)
		//第五个参数0               :套接字类型(数据包式SOCK_DGRAM)
		    ::Sleep(100);
		//-----------------------------------------------------------------------------		
		    if(bStop5)//如果进程停止
			{
				if(m_pSendSocket5)//如果发送套接字m_pSendSocket还有效
					delete m_pSendSocket5;//删除发送套接字m_pSendSocket

			    m_pSendSocket5=NULL;//复原

			    if(m_pSourceFile5[w])//如果源文件还处于打开状态

				    fclose(m_pSourceFile5[w]);//关闭源文件

			    return 0;//函数返回0值
			}
		}//“while(true){………;}”的范围到此结束
		
		//::Sleep(10000);
		
	}
	
	}
}

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFilesend1Dlg dialog

CFilesend1Dlg::CFilesend1Dlg(CWnd* pParent /*=NULL*/)
	: CDialog(CFilesend1Dlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFilesend1Dlg)
	m_Fileaddr1 = _T("地址栏");
	m_Fileaddr2 = _T("地址栏");
	m_Fileaddr3 = _T("地址栏");
	m_Fileaddr4 = _T("地址栏");
	m_Fileaddr5 = _T("地址栏");
	m_Output = _T("您好!感谢您使用本程序,敬请提出改善意见!\r\nRead me:\r\n\t[1]首先通过浏览按钮选择每一路待发送的数据源文件夹;\r\n\t[2]通过点击菜单栏中右边的“发送”菜单即可发送每一路的信息;\r\n\t[3]在此之前要通过点击菜单栏的标引-〉自动标引选项,对待发送的数据源进行信息标引;\r\n\t[4]您也可点击菜单栏中的“数据源统计”和“文件列表”菜单查看每一路数据源的信息");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CFilesend1Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFilesend1Dlg)
	DDX_Control(pDX, IDC_EDIT6, m_OutputCtrl);
	DDX_Text(pDX, IDC_EDIT1, m_Fileaddr1);
	DDX_Text(pDX, IDC_EDIT2, m_Fileaddr2);
	DDX_Text(pDX, IDC_EDIT3, m_Fileaddr3);
	DDX_Text(pDX, IDC_EDIT4, m_Fileaddr4);
	DDX_Text(pDX, IDC_EDIT5, m_Fileaddr5);
	DDX_Text(pDX, IDC_EDIT6, m_Output);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CFilesend1Dlg, CDialog)
	//{{AFX_MSG_MAP(CFilesend1Dlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_COMMAND(ID_MENUITEM32778, OnHelp)
	ON_BN_CLICKED(IDC_BUTTON1, OnBrowse1)
	ON_BN_CLICKED(IDC_BUTTON2, OnBrowse2)
	ON_BN_CLICKED(IDC_BUTTON3, OnBrowse3)
	ON_BN_CLICKED(IDC_BUTTON7, OnBrowse4)
	ON_BN_CLICKED(IDC_BUTTON8, OnBrowse5)
	ON_COMMAND(ID_Send1, OnSend1)
	ON_COMMAND(ID_SEND2, OnSend2)
	ON_COMMAND(ID_SEND3, OnSend3)
	ON_COMMAND(ID_SEND4, OnSend4)
	ON_COMMAND(ID_SEND5, OnSend5)
	ON_COMMAND(IDFILE1, OnFile1)
	ON_COMMAND(IDFILE2, OnFile2)
	ON_COMMAND(IDFILE3, OnFile3)
	ON_COMMAND(IDFILE4, OnFile4)
	ON_COMMAND(IDFILE5, OnFile5)
	ON_COMMAND(ID_AUTO, OnAuto)
	ON_COMMAND(IDSINGLE, OnSingle)
	ON_COMMAND(IDSTOP, OnStop)
	ON_COMMAND(IDNEWUCL, OnNewucl)
	ON_COMMAND(IDSTOP1, OnStop1)
	ON_COMMAND(IDSTOP2, OnStop2)
	ON_COMMAND(IDSTOP3, OnStop3)
	ON_COMMAND(IDSTOP4, OnStop4)
	ON_COMMAND(IDSTOP5, OnStop5)
	ON_COMMAND(IDSTOPALL, OnStop)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
		ON_MESSAGE(WM_SOURCE1WRONG,OnSource1Wrong)
	ON_MESSAGE(WM_SOCKET1WRONG,OnSocket1Wrong)
	ON_MESSAGE(WM_SOURCE2WRONG,OnSource2Wrong)
	ON_MESSAGE(WM_SOCKET2WRONG,OnSocket2Wrong)
	ON_MESSAGE(WM_SOURCE3WRONG,OnSource3Wrong)
	ON_MESSAGE(WM_SOCKET3WRONG,OnSocket3Wrong)
	ON_MESSAGE(WM_SOURCE4WRONG,OnSource4Wrong)
	ON_MESSAGE(WM_SOCKET4WRONG,OnSocket4Wrong)
	ON_MESSAGE(WM_SOURCE5WRONG,OnSource5Wrong)
	ON_MESSAGE(WM_SOCKET5WRONG,OnSocket5Wrong)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -