那里有ping的ocx下载

lifei 2000-12-21 09:06:00
加精
我有一个,不知为何只有debug板可用,并且在另一台机器注册不上,
...全文
154 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
halfdream 2000-12-25
  • 打赏
  • 举报
回复
PING本来就是不长的代码就可以搞定。
为什么一定要控件?而且为什么一定要OCX呢?
就象WINGSUN说的那样吧。
TangSe 2000-12-22
  • 打赏
  • 举报
回复
很简单!不要用ocx!到我主页下载Vpacket.zip,什么问题都解决了。匿名ip;icmp,udp炸弹都可以编!直接发送和接收以太包!!!酷!!!!
Wingsun 2000-12-22
  • 打赏
  • 举报
回复
为什么要OCX的PING控件呢,你可以用C的Ping代码来实现。如下:
你可以对他进行修改以适应你的要求。
//ping.h
//---------------------------------------------------------------------------
#ifndef PingH
#define PingH
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
//---------------------------------------------------------------------------

#pragma pack(1)

#define ICMP_ECHOREPLY 0
#define ICMP_ECHOREQ 8

// IP Header -- RFC 791
typedef struct tagIPHDR
{
u_char VIHL; // Version and IHL
u_char TOS; // Type Of Service
short TotLen; // Total Length
short ID; // Identification
short FlagOff; // Flags and Fragment Offset
u_char TTL; // Time To Live
u_char Protocol; // Protocol
u_short Checksum; // Checksum
struct in_addr iaSrc; // Internet Address - Source
struct in_addr iaDst; // Internet Address - Destination
}IPHDR, *PIPHDR;


// ICMP Header - RFC 792
typedef struct tagICMPHDR
{
u_char Type; // Type
u_char Code; // Code
u_short Checksum; // Checksum
u_short ID; // Identification
u_short Seq; // Sequence
char Data; // Data
}ICMPHDR, *PICMPHDR;


#define REQ_DATASIZE 32 // Echo Request Data size

// ICMP Echo Request
typedef struct tagECHOREQUEST
{
ICMPHDR icmpHdr;
DWORD dwTime;
char cData[REQ_DATASIZE];
}ECHOREQUEST, *PECHOREQUEST;


// ICMP Echo Reply
typedef struct tagECHOREPLY
{
IPHDR ipHdr;
ECHOREQUEST echoRequest;
char cFiller[256];
}ECHOREPLY, *PECHOREPLY;
#pragma pack()

//--------------------------------------------------------------------------------
#define INIT_SUCCESS 0
#define TP_ERR_INIT -1
#define ERR_VERSION_NOT_SUPPORT -2
#define TP_ERR_INIT 0x1001

class TPing
{
private:
HWND m_hwnd;
TListBox * m_pReportListBox;
public:
__fastcall TPing(HWND hwnd,TListBox * pReportLst);
DWORD __fastcall Init();
void __fastcall UnLoad();
void __fastcall UserPing(LPCSTR pstrHost);
void __fastcall ReportError(LPCSTR pstrFrom);
int __fastcall WaitForEchoReply(SOCKET s);
u_short __fastcall in_cksum(u_short *addr, int len);

// ICMP Echo Request/Reply functions
int __fastcall SendEchoRequest(SOCKET, LPSOCKADDR_IN);
DWORD __fastcall RecvEchoReply(SOCKET, LPSOCKADDR_IN, u_char *);
};
//--------------------------------------------------------------------------------
#endif


//-------------------------------
//ping.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Ping.h"

//--------------------------------------------------------------------------------
//
// PING.C -- Ping program using ICMP and RAW Sockets
//
__fastcall TPing::TPing(HWND hwnd,TListBox * pReportLst)
{
m_hwnd=hwnd;
m_pReportListBox=pReportLst;
}
//--------------------------------------------------------------------------------
void __fastcall TPing::UnLoad()
{
WSACleanup();
}
//--------------------------------------------------------------------------------
DWORD __fastcall TPing::Init()
{
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(1,1);
int nRet = WSAStartup(wVersionRequested, &wsaData);
if(nRet != 0)
return TP_ERR_INIT;
// Check version
if(wsaData.wVersion != wVersionRequested)
return ERR_VERSION_NOT_SUPPORT;
}
//--------------------------------------------------------------------------------

// Ping()
// Calls SendEchoRequest() and
// RecvEchoReply() and prints results
void __fastcall TPing::UserPing(LPCSTR pstrHost)
{
SOCKET rawSocket;
LPHOSTENT lpHost;
struct sockaddr_in saDest;
struct sockaddr_in saSrc;
DWORD dwTimeSent;
DWORD dwElapsed;
u_char cTTL;
int nLoop;
int nRet;
char buf[256];

// Create a Raw socket
rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
if(rawSocket == SOCKET_ERROR)
{
ReportError("socket()");
return;
}

// Lookup host
lpHost = gethostbyname(pstrHost);
if(lpHost == NULL)
{
sprintf(buf,"\nHost not found: %s\n", pstrHost);
m_pReportListBox->Items->Add(buf);
return;
}

// Setup destination socket address
saDest.sin_addr.s_addr = *((u_long FAR *) (lpHost->h_addr));
saDest.sin_family = AF_INET;
saDest.sin_port = 0;

// Tell the user what we're doing

sprintf(buf,"\nPinging %s [%s] with %d bytes of data:\n",
pstrHost,
inet_ntoa(saDest.sin_addr),
REQ_DATASIZE);
m_pReportListBox->Items->Add(buf);

// Ping multiple times
for(nLoop = 0; nLoop < 4; nLoop++)
{
// Send ICMP echo request
SendEchoRequest(rawSocket, &saDest);
// Use select() to wait for data to be received
nRet = WaitForEchoReply(rawSocket);
if (nRet == SOCKET_ERROR)
{
ReportError("select()");
break;
}
if(!nRet)
{
sprintf(buf,"TimeOut");
m_pReportListBox->Items->Add(buf);
break;
}

// Receive reply
dwTimeSent = RecvEchoReply(rawSocket, &saSrc, &cTTL);

// Calculate elapsed time
dwElapsed = GetTickCount() - dwTimeSent;
sprintf(buf,"Reply from: %s: bytes=%d time=%ldms TTL=%d",
inet_ntoa(saSrc.sin_addr),
REQ_DATASIZE,
dwElapsed,
cTTL);
m_pReportListBox->Items->Add(buf);
}
nRet = closesocket(rawSocket);
if (nRet == SOCKET_ERROR)
ReportError("closesocket()");
}

// SendEchoRequest()
// Fill in echo request header
// and send to destination
int __fastcall TPing::SendEchoRequest(SOCKET s,LPSOCKADDR_IN lpstToAddr)
{
static ECHOREQUEST echoReq;
static nId = 1;
static nSeq = 1;
int nRet;

// Fill in echo request
echoReq.icmpHdr.Type = ICMP_ECHOREQ;
echoReq.icmpHdr.Code = 0;
echoReq.icmpHdr.Checksum = 0;
echoReq.icmpHdr.ID = nId++;
echoReq.icmpHdr.Seq = nSeq++;

// Fill in some data to send
for(nRet = 0; nRet < REQ_DATASIZE; nRet++)
echoReq.cData[nRet] = ' '+nRet;

// Save tick count when sent
echoReq.dwTime = GetTickCount();

// Put data in packet and compute checksum
echoReq.icmpHdr.Checksum = in_cksum((u_short *)&echoReq, sizeof(ECHOREQUEST));

// Send the echo request
nRet = sendto(s, // socket
(LPSTR)&echoReq, // buffer
sizeof(ECHOREQUEST),
0, // flags
(LPSOCKADDR)lpstToAddr, // destination
sizeof(SOCKADDR_IN)); // address length

if (nRet == SOCKET_ERROR)
ReportError("sendto()");
return (nRet);
}


// RecvEchoReply()
// Receive incoming data
// and parse out fields
DWORD __fastcall TPing::RecvEchoReply(SOCKET s, LPSOCKADDR_IN lpsaFrom, u_char *pTTL)
{
ECHOREPLY echoReply;
int nRet;
int nAddrLen = sizeof(struct sockaddr_in);

// Receive the echo reply
nRet = recvfrom(s, // socket
(LPSTR)&echoReply, // buffer
sizeof(ECHOREPLY), // size of buffer
0, // flags
(LPSOCKADDR)lpsaFrom, // From address
&nAddrLen); // pointer to address len

// Check return value
if (nRet == SOCKET_ERROR)
ReportError("recvfrom()");

// return time sent and IP TTL
*pTTL = echoReply.ipHdr.TTL;
return(echoReply.echoRequest.dwTime);
}

// What happened?
void __fastcall TPing::ReportError(LPCSTR pWhere)
{
char Buf[256];
sprintf(Buf,"\n%s error: %d\n",pWhere,WSAGetLastError());
m_pReportListBox->Items->Add(Buf);
}


// WaitForEchoReply()
// Use select() to determine when
// data is waiting to be read
int __fastcall TPing::WaitForEchoReply(SOCKET s)
{
struct timeval Timeout;
fd_set readfds;

readfds.fd_count = 1;
readfds.fd_array[0] = s;
Timeout.tv_sec = 5;
Timeout.tv_usec = 0;

return(select(1, &readfds, NULL, NULL, &Timeout));
}


//
// Mike Muuss' in_cksum() function
// and his comments from the original
// ping program
//
// * Author -
// * Mike Muuss
// * U. S. Army Ballistic Research Laboratory
// * December, 1983

//
// I N _ C K S U M
//
// Checksum routine for Internet Protocol family headers (C Version)
//
//
u_short __fastcall TPing::in_cksum(u_short *addr, int len)
{
register int nleft = len;
register u_short *w = addr;
register u_short answer;
register int sum = 0;

//
// Our algorithm is simple, using a 32 bit accumulator (sum),
// we add sequential 16 bit words to it, and at the end, fold
// back all the carry bits from the top 16 bits into the lower
// 16 bits.
//
while( nleft > 1 )
{
sum += *w++;
nleft -= 2;
}

// mop up an odd byte, if necessary
if( nleft == 1 )
{
u_short u = 0;
*(u_char *)(&u) = *(u_char *)w ;
sum += u;
}

//
// add back carry outs from top 16 bits to low 16 bits
//
sum = (sum >> 16) + (sum & 0xffff); // add hi 16 to low 16
sum += (sum >> 16); // add carry
answer = ~sum; // truncate to 16 bits
return (answer);
}
//---------------------------------------------------------------------------
#pragma package(smart_init)
lifei 2000-12-22
  • 打赏
  • 举报
回复
我要有源代码的
ttff 2000-12-21
  • 打赏
  • 举报
回复
ICS - Internet Component Suite
==============================
(Aka FPIETTE's Components)


Revised: April 02, 2000
http://www.rtfm.be/fpiette/indexuk.htm
peacock 2000-12-21
  • 打赏
  • 举报
回复
这里http://vcl.vclxx.com/可能有。
sundayboys 2000-12-21
  • 打赏
  • 举报
回复
可以到http://bcbdev.myetang.com/看看。
victorchen_2000 2000-12-21
  • 打赏
  • 举报
回复
到 www.torry.net 找一下,可能有 vcl 控件
本套监控系统非纯软件构成,而是由软硬件结合的监控程序和控制电路两部分组成,虽然控制电路只有几个元件,线路也简单的很,但一点动手能力没有的朋友就请不要下载了。   很多单位都拥有自己的服务器,像WEB服务器、FTP服务器、SMTP服务器等需要24时接入Internet。大家知道,局域网中的计算机基本上都是通过宽带路由器接入Internet,服务器的日常管理与维护通常都是通过Internet进行远程管理,所以,一旦路由器出现异常或停止工作,远程管理将完全无法实现,此时只能靠人工操作来重启路由器了。针对这种现状,作者开发了这套《宽带路由器死机监控系统》,以实现路由器死机后的自动重启。   监控程序布置在服务器(以下称监控计算机)上,并随监控计算机启动自动运行,每隔一定时间Ping路由器IP一次,如果Ping得通,只将信息记入日志不发出动作指令,如果Ping不通,监控程序会将Ping路由器的时间间隔缩短,当Ping路由器连续失败一定次数后,认定是路由器死机,监控程序通过计算机串口发出重启路由器的动作指令。   控制电路的核心元件是一只继电器,继电器的触点开关与路由器的电源开关(或复位启动开关)相连。控制电路还与监控计算机的串口相连。当控制电路接收到来自监控计算机串口输出的动作指令后继电器动作,控制路由器自动重启。   常用路由器有硬路由和由计算机构建的软路由两种。对于前者,控制电路的继电器使用的是常闭触点开关;对于后者,控制电路的继电器使用的是常开触点开关。   1.使用硬路由(要求控制电路的继电器常闭触点开关与硬路由电源开关串联):控制电路接收到动作指令,继电器吸合30秒后释放,相当于硬路由断电30秒后重新加电启动。   2.使用软路由(要求控制电路的继电器常开触点开关与软路由计算机电源开关并联):控制电路接收到动作指令,继电器吸合6秒后释放,延时30秒,继电器再次吸合2秒后释放,相当于计算机电源开关被按下六秒后强制关机,30秒后,计算机电源开关被再次按下,计算机重新启动。   3.使用软路由(要求控制电路的继电器常开触点开关与软路由计算机复位启动开关并联):控制电路接收到动作指令,继电器吸合2秒后释放,相当于计算机复位启动开关被按下2秒后松开,计算机重新启动。   控制电路和接口连接图请见压缩包中的说明文件(注:说明文件所附电路图误将“串口母关”标注成了“串口公头”,CSDN不允许更新上传的压缩包文件,所以请下载的朋友注意修正)。   监控软件用VB编写,只有一个主程序文件,将COMON.EXE复制到监控计算机上,并将其添加到Windows的计划任务中,设置为“计算机启动时运行”,以Administrator的权限运行。如果程序启动时出错,请用下面方法注册MSCOMM32.OCX文件:   将MSCOMM32.OCX拷贝到Windows\system32文件夹中,在“开始-运行”框内输入“REGSVR32.EXE MSCOMM32.OCX”确定。

13,870

社区成员

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

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