如何利用cb发送icmp包,并得到返回的icmp包?急问,谢谢.

rebell 2002-08-18 02:19:48
请大家帮帮我,谢谢了.
...全文
29 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rebell 2002-11-28
  • 打赏
  • 举报
回复
加上了,怎么显示还是0,没有办法了!
rebell 2002-11-28
  • 打赏
  • 举报
回复
不好意思,打分打漏了,怎么加上?
rebell 2002-11-28
  • 打赏
  • 举报
回复
好厉害,还有几个地方不是很明白,不过谢谢了,我会好好利用的。
NowCan 2002-08-18
  • 打赏
  • 举报
回复
#include <windows.h>

#include "Ping.h"

/* */
TPing::TPing(void)
{
Icmpdll=LoadLibrary(TEXT("ICMP.DLL"));
IcmpCreateFile=(ICMPCREATEFILE) GetProcAddress(Icmpdll, "IcmpCreateFile");
IcmpCloseHandle=(ICMPCLOSEHANDLE) GetProcAddress(Icmpdll, "IcmpCloseHandle");
IcmpSendEcho=(ICMPSENDECHO) GetProcAddress(Icmpdll, "IcmpSendEcho");
}

/* */
TPing::~TPing(void)
{
FreeLibrary(Icmpdll);
}

/* */
DWORD TPing::Ping(char *IP, DWORD TimeOut)
{
unsigned long ulIP;
char reply[sizeof(icmp_echo_reply) + 8 + 512];
char Req[512];
HANDLE hIcmp;

icmp_echo_reply *iep= (icmp_echo_reply *) &reply;
hIcmp=IcmpCreateFile();

//MessageBox(NULL, TEXT("IcmpCreatFile"), NULL, MB_OK);
iep->RoundTripTime=0xffffffff;
ulIP=inet_addr(IP);

//MessageBox(NULL, TEXT("inet_addr"), NULL, MB_OK);
IcmpSendEcho(hIcmp, ulIP, Req, 64, NULL, reply, sizeof(icmp_echo_reply) + 8 + 512, TimeOut);

//MessageBox(NULL, TEXT("IcmpSendEcho"), NULL, MB_OK);
IcmpCloseHandle(hIcmp);

//MessageBox(NULL, TEXT("IcmpCloseHandle"), NULL, MB_OK);
return iep->RoundTripTime;
}
NowCan 2002-08-18
  • 打赏
  • 举报
回复
干什么,ping?
#ifndef _PING_H_
#define _PING_H_

#include <windows.h>
#include <ipexport.h>

typedef HANDLE (*ICMPCREATEFILE) (void);
typedef BOOL (*ICMPCLOSEHANDLE) (HANDLE);
typedef DWORD (*ICMPSENDECHO) (HANDLE, ULONG, LPVOID, WORD, LPVOID, LPVOID, DWORD, DWORD);

class TPing
{
/* */
private:
HINSTANCE Icmpdll;
ICMPCREATEFILE IcmpCreateFile;
ICMPCLOSEHANDLE IcmpCloseHandle;
ICMPSENDECHO IcmpSendEcho;

/* */
public:
TPing(void);
~TPing(void);
DWORD Ping(char *IP, DWORD TimeOut);
};
#endif

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧