RT~~~~部分代码如下:// 初始化SOCKET
WSADATA wsaData;
int iErrorCode = ::WSAStartup( MAKEWORD(2,1), &wsaData );
if( SOCKET_ERROR == iErrorCode )
{
printf( "WSAStartup() error. " );
return -1;
} SOCKET sock = ::socket( AF_INET, SOCK_RAW, IPPROTO_IP );
if( INVALID_SOCKET == sock )
{
printf( "socket() error. " );
return -1;
} //获取本机IP地址
char szHostName[200];
iErrorCode = ::gethostname( szHostName, sizeof(szHostName) );
if( SOCKET_ERROR == iErrorCode )
{
printf( "gethostname() error. " );
return -1;
} PHOSTENT pHostent = ::gethostbyname( szHostName ); if( NULL == pHostent )
{
printf( "gethostbyname() error. " );
return -1;
} SOCKADDR_IN sa;
sa.sin_family = AF_INET;
sa.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //inet_addr("192.168.1.101"); //设定绑定网络的ip,未来需要手动传入ip
sa.sin_port = htons( 60000 ); iErrorCode = ::bind( sock, (PSOCKADDR)&sa, sizeof(sa) );
if( SOCKET_ERROR == iErrorCode )
{
printf( "bind() error. " );
return -1;
} // 设置 SOCK_RAW 为 SIO_RCVALL,接收所有的 IP 包
DWORD dwBufferLen[10];
DWORD dwBufferInLen = 1;
DWORD dwBytesReturned = 0;
iErrorCode = ::WSAIoctl( sock, SIO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen), &dwBufferLen,
sizeof( dwBufferLen ), &dwBytesReturned, NULL, NULL );
if( SOCKET_ERROR == iErrorCode )
{
printf( "Ioctl() error. " );
return -1;
} //侦听IP报文
while( 1 )
{
char package[8 * 1024] = { 0 }; // 数据缓冲区
iErrorCode = ::recv( sock, package, sizeof(package), 0 );
if( SOCKET_ERROR == iErrorCode )
{
printf( "recv() error. " );
}
WSADATA wsaData;
int iErrorCode = ::WSAStartup( MAKEWORD(2,1), &wsaData );
if( SOCKET_ERROR == iErrorCode )
{
printf( "WSAStartup() error. " );
return -1;
} SOCKET sock = ::socket( AF_INET, SOCK_RAW, IPPROTO_IP );
if( INVALID_SOCKET == sock )
{
printf( "socket() error. " );
return -1;
} //获取本机IP地址
char szHostName[200];
iErrorCode = ::gethostname( szHostName, sizeof(szHostName) );
if( SOCKET_ERROR == iErrorCode )
{
printf( "gethostname() error. " );
return -1;
} PHOSTENT pHostent = ::gethostbyname( szHostName ); if( NULL == pHostent )
{
printf( "gethostbyname() error. " );
return -1;
} SOCKADDR_IN sa;
sa.sin_family = AF_INET;
sa.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //inet_addr("192.168.1.101"); //设定绑定网络的ip,未来需要手动传入ip
sa.sin_port = htons( 60000 ); iErrorCode = ::bind( sock, (PSOCKADDR)&sa, sizeof(sa) );
if( SOCKET_ERROR == iErrorCode )
{
printf( "bind() error. " );
return -1;
} // 设置 SOCK_RAW 为 SIO_RCVALL,接收所有的 IP 包
DWORD dwBufferLen[10];
DWORD dwBufferInLen = 1;
DWORD dwBytesReturned = 0;
iErrorCode = ::WSAIoctl( sock, SIO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen), &dwBufferLen,
sizeof( dwBufferLen ), &dwBytesReturned, NULL, NULL );
if( SOCKET_ERROR == iErrorCode )
{
printf( "Ioctl() error. " );
return -1;
} //侦听IP报文
while( 1 )
{
char package[8 * 1024] = { 0 }; // 数据缓冲区
iErrorCode = ::recv( sock, package, sizeof(package), 0 );
if( SOCKET_ERROR == iErrorCode )
{
printf( "recv() error. " );
}
解决方案 »
- DoModal问题
- 如何能编程实现自己机器在网络上发出的的所用数据。是发出的...
- 我从小数学不好,帮忙算一下分钟的算法
- 能写一小段代码帮忙吗?是关于非阻塞通信的
- 各OS系统中关于使用ADO连接的SQL SERVER的问题,是否与DLL有关等?
- 怎样才能够把从图片中读取到的像素点的RGB值分别求出来
- 哪有<<Essential C++>>的电子版?高分!
- 类似支付宝 这样的密码控件 如果制作?
- vc编写的完整代码,怎么找到消息命令
- 如何在程序中实现下载FTP,及判断下载状态,当下载完闭后将zip文件自动解压到指定目录。
- VC USBxpress c8051f320
- 请教GDIPlus如何实现文字光晕
打错了,SIO_RCVALL是接收到所有发送到计算机上的网络数据包,你发出去的包,是接收不到的。其实你可以用抓包软件抓包看看的