有没有好心人帮我调试一下程序?我在原有程序上加了一个对话框PortScanDlg()。然后在里面实现端口扫描。并且创建了一个全局线程SubPortScanThread()。但是由于比较菜改不出来,请好心人帮下忙改一下,万分感激!
错误:
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(38) : error C2065: 'UpdateData' : undeclared identifier //错误1
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(40) : error C2065: 'm_IPScan1' : undeclared identifier //错误2
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(40) : error C2228: left of '.GetAddress' must have class/struct/union type //错误3
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(95) : error C2065: 'm_ListView' : undeclared identifier //错误4
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(95) : error C2228: left of '.InsertItem' must have class/struct/union type //错误5
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(97) : error C2228: left of '.SetItemText' must have class/struct/union type //错误6代码: 头文件里面的定义
//{{AFX_DATA(CPortScanDlg)
enum { IDD = IDD_PortScanDlg };
CIPAddressCtrl m_IPScan1;
CListCtrl m_ListView;
int m_PortEnd;
int m_PortStart;
//}}AFX_DATA
// PortScanDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SearchIP.h"
#include "SearchIPDlg.h"
#include "PortScanDlg.h"
#include <winsock.h>
#include <iostream.h>
#include "PortScanDlg.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
# pragma comment(lib,"ws2_32")
#pragma comment(lib,"wsock32.lib") //select成员定义
#define ZERO (fd_set *)0
bool bExit1=false;
/////////////////////////////////////////////////////////////////////////////
// CPortScanDlg dialog
UINT SubPortScanThread(LPVOID port){
int Sock;
CString ScanIP,StrPort;
struct timeval timeout;
struct fd_set mask;
struct sockaddr_in server;
unsigned long flag = 1;
//m_IPScan1.GetAddress(IP3[0],IP3[1],IP3[2],IP3[3]);
UpdateData(false); //把参数传递给变量//************************错误1'UpdateData' : undeclared identifier
BYTE f1, f2, f3, f4;
m_IPScan1.GetAddress(f1,f2,f3,f4); //************************错误2,错误3
//'m_IPScan1' : undeclared identifier
//left of '.GetAddress' must have class/struct/union type
ScanIP.Format("%d.%d.%d.%d",f1,f2,f3,f4);
//创建一个Sock
Sock = socket(AF_INET,SOCK_STREAM,0);
//创建Sock失败
if (Sock = INVALID_SOCKET)
{
AfxMessageBox("Sock Error!");
Maxth--;
return -1;
}
server.sin_family=AF_INET;
server.sin_addr.s_addr=inet_addr(ScanIP);
server.sin_port = htons(short(port));
//调用ioctlsocket()设置套接字为非阻塞模式
if (ioctlsocket(Sock,FIONBIO,&flag) != 0)
{
AfxMessageBox("Sock Error!");
closesocket(Sock);
Maxth--;
return -1;
}
//调用connect()连接远程主机端口
connect(Sock,(struct sockaddr*)&server,sizeof(server));
timeout.tv_sec=19;
timeout.tv_usec=0; //超时时限为19秒
FD_ZERO(&mask); //清空集合mask
FD_SET(Sock,&mask); //将Sock放入集合mask中
//用select()处理扫描结果
switch ( select(Sock+1,ZERO,&mask,ZERO,&timeout))
{
case -1:
{
AfxMessageBox("Select() error!");
Maxth--;
return -1;
}
case 0:
{
Maxth--;
closesocket(Sock);
return -1;
}
default:
if(FD_ISSET(Sock,&mask))
{
//禁止Sock发送和接受数据
shutdown(Sock,0);
//输出数据到ListVIew
int index=m_ListView.InsertItem(0,ScanIP);//************************错误4,错误5
//'m_ListView' : undeclared identifier
//left of '.InsertItem' must have class/struct/union type
m_ListView.SetItemText(index,1,StrPort); //************************错误6
//left of '.SetItemText' must have class/struct/union type
closesocket(Sock);
Maxth--;
return 1;
}
}
return 1;
};
CPortScanDlg::CPortScanDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPortScanDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CPortScanDlg)
m_PortEnd = 0;
m_PortStart = 0;
//}}AFX_DATA_INIT
}
void CPortScanDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPortScanDlg)
DDX_Control(pDX, IDC_IPADDRESS1, m_IPScan1);
DDX_Control(pDX, IDC_LIST3, m_ListView);
DDX_Text(pDX, IDC_PortEnd, m_PortEnd);
DDX_Text(pDX, IDC_PortStart, m_PortStart);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPortScanDlg, CDialog)
//{{AFX_MSG_MAP(CPortScanDlg)
ON_BN_CLICKED(IDC_BUTTONPSTOP, OnButtonpstop)
ON_BN_CLICKED(IDC_BUTTONPSTART, OnButtonpstart)
ON_NOTIFY(IPN_FIELDCHANGED, IDC_IPADDRESS1, OnFieldchangedIpaddress1)
ON_EN_CHANGE(IDC_PortEnd, OnChangePortEnd)
ON_EN_CHANGE(IDC_PortStart, OnChangePortStart)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// CPortScanDlg message handlersBOOL CPortScanDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_IPScan1.SetAddress(127,0,0,1);
GetDlgItem(IDC_BUTTONPSTOP)->EnableWindow(false);
// -----------------对ListView进行初始化---------------------
DWORD dwStyle=GetWindowLong(m_ListView.GetSafeHwnd(),GWL_STYLE);
dwStyle&=~LVS_TYPEMASK;
dwStyle|=LVS_REPORT;
SetWindowLong(m_ListView.GetSafeHwnd(),GWL_STYLE,dwStyle); m_ListView.SetTextColor(RGB(255,0,0));//设置字的颜色
//对DataList加入列
m_ListView.InsertColumn(0," 端口",LVCFMT_LEFT,100);
m_ListView.InsertColumn(0," IP地址",LVCFMT_LEFT,100);
m_ListView.SetExtendedStyle(LVS_EX_GRIDLINES);//设置m_ListView显示格式
::SendMessage(m_ListView.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,
LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);//发送消息
//---------------------------------------------------------- return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
错误:
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(38) : error C2065: 'UpdateData' : undeclared identifier //错误1
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(40) : error C2065: 'm_IPScan1' : undeclared identifier //错误2
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(40) : error C2228: left of '.GetAddress' must have class/struct/union type //错误3
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(95) : error C2065: 'm_ListView' : undeclared identifier //错误4
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(95) : error C2228: left of '.InsertItem' must have class/struct/union type //错误5
E:\毕业设计\进度3\PortScan\PortScanDlg.cpp(97) : error C2228: left of '.SetItemText' must have class/struct/union type //错误6代码: 头文件里面的定义
//{{AFX_DATA(CPortScanDlg)
enum { IDD = IDD_PortScanDlg };
CIPAddressCtrl m_IPScan1;
CListCtrl m_ListView;
int m_PortEnd;
int m_PortStart;
//}}AFX_DATA
// PortScanDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SearchIP.h"
#include "SearchIPDlg.h"
#include "PortScanDlg.h"
#include <winsock.h>
#include <iostream.h>
#include "PortScanDlg.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
# pragma comment(lib,"ws2_32")
#pragma comment(lib,"wsock32.lib") //select成员定义
#define ZERO (fd_set *)0
bool bExit1=false;
/////////////////////////////////////////////////////////////////////////////
// CPortScanDlg dialog
UINT SubPortScanThread(LPVOID port){
int Sock;
CString ScanIP,StrPort;
struct timeval timeout;
struct fd_set mask;
struct sockaddr_in server;
unsigned long flag = 1;
//m_IPScan1.GetAddress(IP3[0],IP3[1],IP3[2],IP3[3]);
UpdateData(false); //把参数传递给变量//************************错误1'UpdateData' : undeclared identifier
BYTE f1, f2, f3, f4;
m_IPScan1.GetAddress(f1,f2,f3,f4); //************************错误2,错误3
//'m_IPScan1' : undeclared identifier
//left of '.GetAddress' must have class/struct/union type
ScanIP.Format("%d.%d.%d.%d",f1,f2,f3,f4);
//创建一个Sock
Sock = socket(AF_INET,SOCK_STREAM,0);
//创建Sock失败
if (Sock = INVALID_SOCKET)
{
AfxMessageBox("Sock Error!");
Maxth--;
return -1;
}
server.sin_family=AF_INET;
server.sin_addr.s_addr=inet_addr(ScanIP);
server.sin_port = htons(short(port));
//调用ioctlsocket()设置套接字为非阻塞模式
if (ioctlsocket(Sock,FIONBIO,&flag) != 0)
{
AfxMessageBox("Sock Error!");
closesocket(Sock);
Maxth--;
return -1;
}
//调用connect()连接远程主机端口
connect(Sock,(struct sockaddr*)&server,sizeof(server));
timeout.tv_sec=19;
timeout.tv_usec=0; //超时时限为19秒
FD_ZERO(&mask); //清空集合mask
FD_SET(Sock,&mask); //将Sock放入集合mask中
//用select()处理扫描结果
switch ( select(Sock+1,ZERO,&mask,ZERO,&timeout))
{
case -1:
{
AfxMessageBox("Select() error!");
Maxth--;
return -1;
}
case 0:
{
Maxth--;
closesocket(Sock);
return -1;
}
default:
if(FD_ISSET(Sock,&mask))
{
//禁止Sock发送和接受数据
shutdown(Sock,0);
//输出数据到ListVIew
int index=m_ListView.InsertItem(0,ScanIP);//************************错误4,错误5
//'m_ListView' : undeclared identifier
//left of '.InsertItem' must have class/struct/union type
m_ListView.SetItemText(index,1,StrPort); //************************错误6
//left of '.SetItemText' must have class/struct/union type
closesocket(Sock);
Maxth--;
return 1;
}
}
return 1;
};
CPortScanDlg::CPortScanDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPortScanDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CPortScanDlg)
m_PortEnd = 0;
m_PortStart = 0;
//}}AFX_DATA_INIT
}
void CPortScanDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPortScanDlg)
DDX_Control(pDX, IDC_IPADDRESS1, m_IPScan1);
DDX_Control(pDX, IDC_LIST3, m_ListView);
DDX_Text(pDX, IDC_PortEnd, m_PortEnd);
DDX_Text(pDX, IDC_PortStart, m_PortStart);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPortScanDlg, CDialog)
//{{AFX_MSG_MAP(CPortScanDlg)
ON_BN_CLICKED(IDC_BUTTONPSTOP, OnButtonpstop)
ON_BN_CLICKED(IDC_BUTTONPSTART, OnButtonpstart)
ON_NOTIFY(IPN_FIELDCHANGED, IDC_IPADDRESS1, OnFieldchangedIpaddress1)
ON_EN_CHANGE(IDC_PortEnd, OnChangePortEnd)
ON_EN_CHANGE(IDC_PortStart, OnChangePortStart)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// CPortScanDlg message handlersBOOL CPortScanDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_IPScan1.SetAddress(127,0,0,1);
GetDlgItem(IDC_BUTTONPSTOP)->EnableWindow(false);
// -----------------对ListView进行初始化---------------------
DWORD dwStyle=GetWindowLong(m_ListView.GetSafeHwnd(),GWL_STYLE);
dwStyle&=~LVS_TYPEMASK;
dwStyle|=LVS_REPORT;
SetWindowLong(m_ListView.GetSafeHwnd(),GWL_STYLE,dwStyle); m_ListView.SetTextColor(RGB(255,0,0));//设置字的颜色
//对DataList加入列
m_ListView.InsertColumn(0," 端口",LVCFMT_LEFT,100);
m_ListView.InsertColumn(0," IP地址",LVCFMT_LEFT,100);
m_ListView.SetExtendedStyle(LVS_EX_GRIDLINES);//设置m_ListView显示格式
::SendMessage(m_ListView.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,
LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);//发送消息
//---------------------------------------------------------- return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
[email protected]
DeBug Assertion failed!
这个错误?