程序正在运行时,网络断开,系统报红叉,如何处理?(100分)

  • 主题发起人 主题发起人 guoyp2126
  • 开始时间 开始时间
G

guoyp2126

Unregistered / Unconfirmed
GUEST, unregistred user!
我们系统是架构在VPN环境下的瘦客户模式下运行,在程序运行时,拔掉网线,网络中断,系统报红叉,用ping服务器的来检测网络是否正常也不可取,原因有二,第一,如果ping服务器时间间隔很小,影响性能,如果过大,红叉出来以后,你的提示才能出来;第二,服务器一般设置为禁ping的。请问有没有其他的方式来解决此问题?
 
搞不懂你的问题到底是什么问题。 拨掉网线当然出错,拨掉多久后才出现错误提示和超时设置有关吧。当然你可以设置成短点的时间,问题是产生的负面影响。

说到底,你说的问题不是问题,TCP/IP网络就是这样。
 
问题可能我没说清楚,当程序运行时网络出现故障时,程序报红叉,现在想问如何在报红叉前,扑获异常,给用户友好提示后,自动退出系统。
 
话题907056的标题是: 如何在WIN98下用DELPHI快速检测网路是否连接 (50分)
分类:局域网 / 通讯 hezhilong (2002-02-04 23:14:00)
我在WINDOWS 2000下C打开lintDataSet时,若断网则马上报错,可在WINDOWS98下则要
等待很长时间才报错,我希望在WINDOWS98下能象WINDOWS 2000一样,应如何解决?
另外,在WINDOWS 98下如何快速检测网络是否连接?


hezhilong (2002-02-05 13:23:00)
没人回答?

zhcg (2002-02-05 13:52:00)
利用以下程序检测计算机有没有连网,如果有,状态栏显示正常,没有刚显示失败提示!
我试过,没问题。
以下为源代码:
unit newdial;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
KsHooks, KsForms, EpIIForms, OleCtrls, SHDocVw, ComCtrls, StdCtrls,
ExtCtrls, KsControls, KsButtons, EpIIButtons, KsItems, EpIIItems,
KsMenus, EpIIMenus,Winsock, SkinEngine, SkinCtrls, SkinButton; //此处要增加引用winsock;

type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Panel1: TPanel;
WebBrowser1: TWebBrowser;
scSkinStore1: TscSkinStore;
scSkinEngine1: TscSkinEngine;
EpButton1: TEpButton;
EpButton2: TEpButton;
EpButton3: TEpButton;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
procedure CustomItem5Click(Sender: TObject);
procedure CustomItem6Click(Sender: TObject);
procedure scButton1Click(Sender: TObject);
procedure EpButton1Click(Sender: TObject);
procedure EpButton3Click(Sender: TObject);
procedure EpButton2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
function FindComputer(ComputerName: string):Boolean;//此处要增加这些声明;
implementation

uses Unit2, Unit3;

{$R *.DFM}

function FindComputer(ComputerName: string):Boolean;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
Result :=True;
WSAStartup(2, WSAData);
HostEnt := gethostbyname(PChar(ComputerName));
if HostEnt = nil then Result := False;
WSACleanup;
end; //此处要定义这个动作;

procedure TForm1.FormCreate(Sender: TObject);
begin
if FindComputer('ntserver')=True then
statusbar1.Panels[0].text:=' 计算机ntserver已找到!'
else
statusbar1.Panels[0].text:='计算机ntserver未找到!';
end;

end.

hezhilong (2004-01-31 15:13:00)
接受答案了.


zhcg的回答最终被接受。
 
多人接受答案了。
 
后退
顶部