再次请教联机问题? 我的机器是在局域网内,请问有什么好的办法判断是否连机了呢?急 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用来判断计算机是否连接到internet 的.里面是通过ping 来判断的, 可以修改来判两台机是否连接type PIPOptionInformation = ^TIPOptionInformation; TIPOptionInformation = packed record TTL: Byte; TOS: Byte; Flags: Byte; OptionsSize: Byte; OptionsData: PChar; end; type PIcmpEchoReply = ^TIcmpEchoReply; TIcmpEchoReply = packed record Address: DWord; Status: DWord; RTT: DWord; DataSize:Word; Reserved: Word; Data: Pointer; Options: TIPOptionInformation; end; TIcmpCreateFile = function: THandle; stdcall; TIcmpCloseHandle = function(IcmpHandle: THandle): Boolean; stdcall; TIcmpSendEcho = function(IcmpHandle:THandle; DestinationAddress:DWord; RequestData: Pointer; RequestSize: DWord; RequestOptions: PIPOptionInformation; ReplyBuffer: Pointer; ReplySize: DWord; Timeout: DWord): DWord; stdcall;type private { Private declarations } hICMP: THANDLE; IcmpCreateFile : TIcmpCreateFile; IcmpCloseHandle:TIcmpCloseHandle; IcmpSendEcho: TIcmpSendEcho; public { Public declarations } hICMPdll: HMODULE; end;implementationvar IPOpt:TIPOptionInformation; FIPAddress:DWORD; pReqData,pRevData:PChar; pIPE:PIcmpEchoReply; FSize: DWORD; MyString:string; FTimeOut:DWORD; BufferSize:DWORD; Date1,Date3,Date4:TDateTime; TableName1, TableName3,Tablename4:string; Num1,Num2,Num3,Num4:integer; i:integer; DateStr1:String;beginhICMPdll := LoadLibrary('icmp.dll');@ICMPCreateFile:= GetProcAddress(hICMPdll, 'IcmpCreateFile');@IcmpCloseHandle := GetProcAddress(hICMPdll, 'IcmpCloseHandle');@IcmpSendEcho := GetProcAddress(hICMPdll, 'IcmpSendEcho');hICMP := IcmpCreateFile;FIPAddress:=inet_addr(PChar('169.254.3.253'));//IP地址 改为对方计算机IPFSize:=80;BufferSize:=SizeOf(TICMPEchoReply)+FSize;GetMem(pRevData,FSize);GetMem(pIPE,BufferSize);FillChar(pIPE^, SizeOf(pIPE^), 0);pIPE^.Data := pRevData;MyString := 'Argen Ping32 Sending Message.';pReqData := PChar(MyString);FillChar(IPOpt, Sizeof(IPOpt), 0);IPOpt.TTL:= 64;FTimeOut :=500;IcmpSendEcho(hICMP, FIPAddress, pReqData, Length(MyString),@IPOpt, pIPE, BufferSize, FTimeOut);trytryif pReqData^ = pIPE^.Options.OptionsData^ thenshowmeesage('目标到达');exceptMessagebox(self.handle,'目标不可到','Ping32',64)end;finallyFreeMem(pRevData);FreeMem(pIPE);end;end;end. 看谁~能解决这个捆饶我好久的数据库查询速度和超时问题!!!!!!!!!!专家进来啊~~~~~~~~~`` 关于ADO的连接的问题? 请问这个软件值多少钱, 分不够可以再加。 求助,如何用fastreport做动态报表?急!急!急! 补充:有相同字段的两个dbgrid如何实现数据的同步选择? 如何用TPrinter的哪个属性知道连接的是镭射还是点阵打印机?(或者用Api函数也行) 异步存取数据的问题? 关于dbedit中回车输入数据 怎样在一个memo中显示多种字体? 这个软件是用Delphi编写的吗 能在win2000登录前运行我的程序吗? 有关在类和类中自定义事件不能激活的问题
type
PIPOptionInformation = ^TIPOptionInformation;
TIPOptionInformation = packed record
TTL: Byte;
TOS: Byte;
Flags: Byte;
OptionsSize: Byte;
OptionsData: PChar;
end;
type PIcmpEchoReply = ^TIcmpEchoReply;
TIcmpEchoReply = packed record
Address: DWord;
Status: DWord;
RTT: DWord;
DataSize:Word;
Reserved: Word;
Data: Pointer;
Options: TIPOptionInformation;
end;
TIcmpCreateFile = function: THandle; stdcall;
TIcmpCloseHandle = function(IcmpHandle: THandle): Boolean; stdcall;
TIcmpSendEcho = function(IcmpHandle:THandle;
DestinationAddress:DWord;
RequestData: Pointer;
RequestSize: DWord;
RequestOptions: PIPOptionInformation;
ReplyBuffer: Pointer;
ReplySize: DWord;
Timeout: DWord): DWord; stdcall;type
private
{ Private declarations }
hICMP: THANDLE;
IcmpCreateFile : TIcmpCreateFile;
IcmpCloseHandle:TIcmpCloseHandle;
IcmpSendEcho: TIcmpSendEcho;
public
{ Public declarations }
hICMPdll: HMODULE; end;implementation
var
IPOpt:TIPOptionInformation;
FIPAddress:DWORD;
pReqData,pRevData:PChar;
pIPE:PIcmpEchoReply;
FSize: DWORD;
MyString:string;
FTimeOut:DWORD;
BufferSize:DWORD;
Date1,Date3,Date4:TDateTime;
TableName1,
TableName3,Tablename4:string;
Num1,Num2,Num3,Num4:integer;
i:integer;
DateStr1:String;
begin
hICMPdll := LoadLibrary('icmp.dll');
@ICMPCreateFile:= GetProcAddress(hICMPdll, 'IcmpCreateFile');
@IcmpCloseHandle := GetProcAddress(hICMPdll, 'IcmpCloseHandle');
@IcmpSendEcho := GetProcAddress(hICMPdll, 'IcmpSendEcho');
hICMP := IcmpCreateFile;
FIPAddress:=inet_addr(PChar('169.254.3.253'));//IP地址 改为对方计算机IP
FSize:=80;
BufferSize:=SizeOf(TICMPEchoReply)+FSize;
GetMem(pRevData,FSize);
GetMem(pIPE,BufferSize);
FillChar(pIPE^, SizeOf(pIPE^), 0);
pIPE^.Data := pRevData;
MyString := 'Argen Ping32 Sending Message.';
pReqData := PChar(MyString);
FillChar(IPOpt, Sizeof(IPOpt), 0);
IPOpt.TTL:= 64;
FTimeOut :=500;
IcmpSendEcho(hICMP, FIPAddress, pReqData, Length(MyString),@IPOpt, pIPE,
BufferSize, FTimeOut);
try
try
if pReqData^ = pIPE^.Options.OptionsData^ then
showmeesage('目标到达');
except
Messagebox(self.handle,'目标不可到','Ping32',64)
end;
finally
FreeMem(pRevData);
FreeMem(pIPE);
end;
end;end.