📄 sndipdlg.cpp
字号:
// SndipDlg.cpp : implementation file
//
#include "stdafx.h"
#include "idstest.h"
#include "SndipDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSndipDlg dialog
CSndipDlg::CSndipDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSndipDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSndipDlg)
m_flux = 100;
m_ipaddr = _T("192.168.0.4");
m_port = 123;
m_proto = 0;
m_count=0;
//}}AFX_DATA_INIT
}
void CSndipDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSndipDlg)
DDX_Text(pDX, IDC_EDIT_FLUX, m_flux);
DDV_MinMaxUInt(pDX, m_flux, 1, 1200);
DDX_Text(pDX, IDC_EDIT_IPADDR, m_ipaddr);
DDX_Text(pDX, IDC_EDIT_PORT, m_port);
DDV_MinMaxInt(pDX, m_port, 0, 128);
DDX_Radio(pDX, IDC_RADIO_TCP, m_proto);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSndipDlg, CDialog)
//{{AFX_MSG_MAP(CSndipDlg)
ON_BN_CLICKED(IDC_BUTTON_STARTSND, OnButtonStartsnd)
ON_BN_CLICKED(IDC_RADIO_ICMP, OnRadioIcmp)
ON_BN_CLICKED(IDC_RADIO_TCP, OnRadioTcp)
ON_BN_CLICKED(IDC_RADIO_UDP, OnRadioUdp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSndipDlg message handlers
BOOL m_start=FALSE;
// DWORD dwNow=0;
UINT ThrSendIP(LPVOID start)
{
// BOOL start1=(BOOL )start;
CSndipDlg *start1=(CSndipDlg *)start;
float dwOld=0,dwNew=0;
CString aa=_T("");
dwOld=(float)GetTickCount();
do
{
if(!(start1->IpPack.SendIP(start1->m_flux)))
(start1->m_count)+=start1->m_flux;
// start1->m_count++;
else
{
start1->IsShowCtrl(TRUE);
return 0;
}
Sleep(1000);
}while(m_start);
dwNew=(float)GetTickCount();
aa.Format("已经成功的发送了%d个数据包\n实际流量:%f",start1->m_count,(float)start1->m_count/((dwNew-dwOld)/1000));
AfxMessageBox(aa);
return 1;
}
void CSndipDlg::OnButtonStartsnd()
{
// TODO: Add your control notification handler code here
// CString TheClue=_T("");
UpdateData();
// IpPack;
// IpPack.m_p.in_destaddr=_T("192.168.0.4");//m_ipaddr;
m_start=!m_start;
if(m_start)
GetDlgItem(IDC_BUTTON_STARTSND)->SetWindowText("停止");
else
GetDlgItem(IDC_BUTTON_STARTSND)->SetWindowText("发送数据");
strcpy(IpPack.m_p.in_destaddr,m_ipaddr.GetBuffer(16));
switch(m_proto)
{
case 0:
{
IpPack.m_p.in_destport=m_port;
IpPack.m_p.in_protocol=TCP;
break;
}
case 1:
{
IpPack.m_p.in_destport=m_port;
IpPack.m_p.in_protocol=UDP;
break;
}
case 2:
{
IpPack.m_p.in_protocol=ICMP;
break;
}
default:
break;
}
if(m_start)
{
if((m_flux<=0)||(m_port<0)||(m_port>128))
{
IsShowCtrl(TRUE);
return ;
}
m_count=0;
AfxBeginThread((AFX_THREADPROC)ThrSendIP, (LPVOID)this);
IsShowCtrl(FALSE);
}
else
{
// DWORD time=0;
// time=dwNew-dwOld;
// TheClue.Format("已经成功的发送了%d个数据包\n当前的流量是:%d个数据包/秒",m_count,m_flux/*,dwNew,m_count/(time/1000)*/);
// AfxMessageBox(TheClue);
IsShowCtrl(TRUE);
}
}
BOOL CSndipDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSndipDlg::OnRadioIcmp()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT_PORT)->EnableWindow(FALSE);
}
void CSndipDlg::OnRadioTcp()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT_PORT)->EnableWindow(TRUE);
}
void CSndipDlg::OnRadioUdp()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT_PORT)->EnableWindow(TRUE);
}
void CSndipDlg::IsShowCtrl(BOOL IsCtrl)
{
GetDlgItem(IDC_RADIO_TCP)->EnableWindow(IsCtrl);
GetDlgItem(IDC_RADIO_UDP)->EnableWindow(IsCtrl);
GetDlgItem(IDC_RADIO_ICMP)->EnableWindow(IsCtrl);
// GetDlgItem(IDOK)->EnableWindow(IsCtrl);
GetDlgItem(IDCANCEL)->EnableWindow(IsCtrl);
if(IsCtrl)
GetDlgItem(IDC_BUTTON_STARTSND)->SetWindowText("发送数据");
else
GetDlgItem(IDC_BUTTON_STARTSND)->SetWindowText("停止");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -