下面是我读别人的一个网络嗅探程序中遇到的一些问题,希望大家指教。
1.在VC6.0的Workspace下面ClassView ,ResourceView,FileView中的FileView下面在什么情况下会出现
External Dependencies文件夹。
2.External Dependencies里面常常出现的basetsd.h是做什么的。什么时候出现?External Dependencies里面的头文件和Header Files里面的有什么不同?
3.在我读的程序里面External Dependencies里面加入了AFXSOCK.H,mstcpip.h等等文件。我想问问
是怎么加的,我只会在Header Files里面加。想拖动却拖不到External Dependencies里面。
希望能详细说下。
1.在VC6.0的Workspace下面ClassView ,ResourceView,FileView中的FileView下面在什么情况下会出现
External Dependencies文件夹。
2.External Dependencies里面常常出现的basetsd.h是做什么的。什么时候出现?External Dependencies里面的头文件和Header Files里面的有什么不同?
3.在我读的程序里面External Dependencies里面加入了AFXSOCK.H,mstcpip.h等等文件。我想问问
是怎么加的,我只会在Header Files里面加。想拖动却拖不到External Dependencies里面。
希望能详细说下。
解决方案 »
- 如何脱离visual stdio环境编写MFC程序?
- vc程序里面怎么执行cmd的命令
- 这下真得搞不定了,是关于ATL中的消息映射的
- 写个过滤数据包的Win32 DLL(SPI的Xfilter那种)
- 高手请进:如何在程序中把英文菜单字体换成中文的?
- MFC使用ado连接数据库,还需要使用ODBC配置dsn吗
- COleVariant _variant_t CComVariant 区别???
- 怎么从一个文件中读取和写入连续的CTRING和INT类型数据
- 完成端口和线程池答疑解惑
- 如何使用钩子捕获其他窗口的菜单消息?
- 关于MSXML的namespace的问题。。。
- 有没有免费的比较好用的换肤代码或控件?
#include "afxsock.h"
#include "Iphlpapi.h"
可是External Dependencies里面列出了更多的,
#include "afxsock.h"
#include "Iphlpapi.h"
两个包含了许多其他的头文件。
mstcpip.h很简单,没什么东西。
D:\EXAMPLE3\练习7\Sniffer\SnifferDlg.cpp(559) : error C2065: 'WSAIoctl' : undeclared identifierD:\EXAMPLE3\练习7\Sniffer\SnifferDlg.cpp(559) : error C2065: '_WSAIOW' : undeclared identifierD:\EXAMPLE3\练习7\Sniffer\SnifferDlg.cpp(559) : error C2065: 'IOC_VENDOR' : undeclared identifier
是不是这样加不对,能说说吗?
void CSnifferDlg::OnLookup()
{
// TODO: Add your control notification handler code here
char szErr [ 50 ] , szHostName[MAX_PATH];//目录
DWORD dwErr ;
SOCKADDR_IN sa; gethostname(szHostName, sizeof(szHostName)) ;
m_iphostsource = m_ipsource ;
m_ipcheckedhost = ntohl(m_iphost) ;
//The Windows Sockets ntohl function converts a u_long
//from TCP/IP network order to host byte order,与htonl
//相反 if( 0 == m_threadID )//第一次按键后执行
{
SetDlgItemText(IDC_LOOKUP,"停止查看!" );
}
else
{
if( m_threadID )
{
PostThreadMessage(m_threadID,WM_CLOSE,0,0) ;
//传递一个线程的消息到消息队列
SetDlgItemText(IDC_LOOKUP,"开始查看!");
m_start.EnableWindow(FALSE) ;
}
return ;
}
//////////////////////
DWORD dwBufferLen[10] ;//DWORD is unsigned long
DWORD dwBufferInLen= 1 ;
DWORD dwBytesReturned = 0 ;
m_s = socket( AF_INET , SOCK_RAW , IPPROTO_IP ) ;//套接字
////////////////////
if( INVALID_SOCKET == m_s )
{
dwErr = WSAGetLastError() ;
sprintf( szErr , "Error socket() = %ld " , dwErr ) ;
AfxMessageBox( szErr ) ;
closesocket( m_s ) ;
return ;
}
///////////////////
//另外一种错误判断
int rcvtimeo = 5000 ;
if( setsockopt( m_s , SOL_SOCKET , SO_RCVTIMEO ,
(const char *)&rcvtimeo , sizeof(rcvtimeo) ) == SOCKET_ERROR)
{
dwErr = WSAGetLastError() ;
sprintf( szErr , "Error WSAIoctl = %ld " , dwErr ) ;
AfxMessageBox( szErr ) ;
closesocket( m_s ) ;
return ;
}
///////////////////
sa.sin_family = AF_INET;
sa.sin_port = htons(7000);//选择服务端口
sa.sin_addr.s_addr= m_iphostsource;//选择IP地址
if (bind(m_s,(PSOCKADDR)&sa, sizeof(sa)) == SOCKET_ERROR)
{
dwErr = WSAGetLastError() ;
sprintf( szErr , "Error bind() = %ld " , dwErr ) ;
AfxMessageBox( szErr ) ;
closesocket( m_s ) ;
return ;
}
if( SOCKET_ERROR != WSAIoctl( m_s, SIO_RCVALL , &dwBufferInLen,
sizeof(dwBufferInLen),&dwBufferLen, sizeof(dwBufferLen),
&dwBytesReturned , NULL , NULL ) )//WSAIoctl控制SOCKET模式
{
//开启线程
AfxBeginThread( threadFunc , (LPVOID)this );
}
else
{
dwErr = WSAGetLastError() ;
sprintf( szErr , "Error WSAIoctl = %ld " , dwErr ) ;
AfxMessageBox( szErr ) ;
closesocket( m_s ) ;//关闭socket
return ;
}
}
#include "Winsock2.h"
#pragma comment(lib "Ws2_32.lib")
//////////////////////////////////////////
WSAIoctl、_WSAIOW、'IOC_VENDOR 的声明都在sock2库里。
里面是你工程设置等包含了文件夹进去,列出所有的相关文件
Header Files包含了你工程引用的头文件等,
包含头文件要注意,有的头文件有先后包含的问题,否则可能会有影响。
另,发源代码的时候,
记得把Debug目录和Release目录去掉,占空间,没用,还影响收信速度
^_^
会出现编译后,某些事件无法触发。
至于,哪个控件关联哪个ID可以在VC资源编辑器中看它的属性可以看到。
3.比较字符串,不能简单的用==,应该用strcmp之类的字符串比较函数。
这个我还想了解一下,我之前做了个VC通过ODBC数据源连接SQL Server表的程序,
对表实施简单的查询,删除,添加,排序等。
查询时候用厂商名(中文的)做判断条件时候,就查询不出来,后来只能用厂商号查询。
数字的,才行,我当时用了==,也用了strcmp,但都不行,是不是中文名,还有别的函数
比较啊