我知道PACKET.dll里有个packetsendpacket,不知道参数如何填,请大侠指教,加分多多!
解决方案 »
- 求职黄金期
- 请问:DELPHI中的远程文件传送是否必须用C/S方式。有没有直接B/S的? 另谁有具体的例子,发个给我。100在线等候
- 這是什么类型?有没有人答啊啦!
- 如何用delphi的OLEContainer操控MS Word?
- 图象识别或模式识别
- 三层结构测试,菜鸟问题
- 用delphi编程asp组件,能否使用Intnet面板上的组件如:ClientSocket,同另一台机器上的软件进行通讯?如果能的话,怎么接受来自另一台机
- 请问如何设置密码位数为固定的?
- "INSERT INTO 语法错误" 为什么?
- 兄弟救命!!!方向键扫和pagedown、pageup描码是多少?
- 请问使用Delphi写的程序运行在Windows2003Server中为何不能发出警告声?
- 请问在DBGrid中如何截获消息?
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private:
typedef unsigned long(__import __stdcall Fun_2ul2ulPtrTOul)(unsigned long,unsigned long,unsigned long*,unsigned long*);
Fun_2ul2ulPtrTOul *Func1;
bool fromIPtoMAC(String&);
public:
__fastcall Tmain_(TComponent* Owner);
###################################################################
bool Tmain_::fromIPtoMAC(String& S)
{ HINSTANCE hIphlpapiDll;
hIphlpapiDll=LoadLibrary("iphlpapi.dll");
if(hIphlpapiDll==NULL)
{
FreeLibrary(hIphlpapiDll);
S="好像没有找到iphlpapi.dll";
return false;
} unsigned long Rt,L_id,*L_MAC,L_phyAddrLen;
Rt=-1;
L_id=inet_addr(S.c_str());// inet_appr #include <winsock2.h>
if(L_id==INADDR_NONE)
{
FreeLibrary(hIphlpapiDll);
S="无效IP地址--"+S;
return false;
}
__int64 x=0;
L_MAC=reinterpret_cast<unsigned long*>(&x);
L_phyAddrLen=6; (FARPROC &)Func1=GetProcAddress (hIphlpapiDll,"SendARP");
Rt=Func1(L_id,0,L_MAC,&L_phyAddrLen);
if(Rt!=0)
{
FreeLibrary(hIphlpapiDll);
S="没找到机器--"+S;
return false;
} String Str_MAC;
Str_MAC=IntToHex(x,8).SubString(1,12);
Str_MAC=Str_MAC.Length()<12?"0"+Str_MAC:Str_MAC;
S=S+" "+Str_MAC; FreeLibrary(hIphlpapiDll);
return true;
}
const SrcIP: DWord;
const pMacAddr: Pointer;
const PhyAddrLen: PULONG): DWord; stdcall; external 'IPHLPAPI.DLL' name 'SendARP';function inet_addr(const cp: PChar): DWord; stdcall; external 'WS2_32.DLL' name 'inet_addr';procedure TForm1.Button1Click(Sender: TObject);
var
dwResult: DWord;
ulIPAddr: DWord;
ulMACAddr: array[0..5] of Byte;
ulAddrLen: ULONG;
begin
ulIPAddr := inet_addr(PChar(Edit1.Text));
// ShowMessage(IntToHex(ulIPAddr, 8));
if ulIPAddr = INADDR_NONE then
begin
MessageDlg('Invalid IP address', mtError, [mbOK], 0);
Exit;
end;
ulAddrLen := 6;
dwResult := SendARP(ulIPAddr, 0, @ulMACAddr, @ulAddrLen);
if dwResult <> 0 then
begin
MessageDlg('Error in send ARP request', mtError, [mbOK], 0);
Exit;
end;
ShowMessage('MAC address : ' +
IntToHex(ulMACAddr[0], 2) + ':' +
IntToHex(ulMACAddr[1], 2) + ':' +
IntToHex(ulMACAddr[2], 2) + ':' +
IntToHex(ulMACAddr[3], 2) + ':' +
IntToHex(ulMACAddr[4], 2) + ':' +
IntToHex(ulMACAddr[5], 2));
end;
这是扫描什么原因?