有没有好心人帮我调试一下程序?我在原有程序上加了一个对话框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
}