如何判断两台计算机是否连通?(在线等)

slchen 2006-02-09 02:05:46
我制作了一个网络软件。其中用到了控件,定时刷新程序。可是当网络(计算机与服务器)不通时,我想能够判断出来,然后可以不在刷新。请问怎样判断是否连通?
...全文
827 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xrdsheng 2006-02-24
  • 打赏
  • 举报
回复
.h文件

//---------------------------------------------------------------------------

#ifndef test_icmpH
#define test_icmpH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <IdBaseComponent.hpp>
#include <IdComponent.hpp>
#include <IdIcmpClient.hpp>
#include <IdRawBase.hpp>
#include <IdRawClient.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TIdIcmpClient *IdIcmpClient1;
TEdit *edt_IpAddr;
TMemo *Memo1;
TButton *btn_StartPing;
TButton *btn_StopPing;
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall IdIcmpClient1Reply(TComponent *ASender,
const TReplyStatus &AReplyStatus);
void __fastcall btn_StartPingClick(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
__fastcall ~TForm1();
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
xrdsheng 2006-02-24
  • 打赏
  • 举报
回复
用ICMP协议(BCB中的TIdIcmpClient组件)

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "test_icmp.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

__fastcall TForm1::~TForm1()
{
//TODO: Add your source code here
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
//
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdIcmpClient1Reply(TComponent *ASender,
const TReplyStatus &AReplyStatus)
{
if(AReplyStatus.ReplyStatusType == rsEcho)
{
Memo1->Lines->Add("ok");
}
else
{
Memo1->Lines->Add("error");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn_StartPingClick(TObject *Sender)
{
int i;

IdIcmpClient1->Host = edt_IpAddr->Text ;
while(1)
{
IdIcmpClient1->Ping() ;
::Sleep(2000);
}
}
//---------------------------------------------------------------------------
renfushen 2006-02-22
  • 打赏
  • 举报
回复
大大怪老张 2006-02-10
  • 打赏
  • 举报
回复
ping 一下,网上有ping的代码
constantine 2006-02-09
  • 打赏
  • 举报
回复
可以自己定义一个包,定时发送,对方收到就要答复,你根据收到对方答复的包来确定,
pp616 2006-02-09
  • 打赏
  • 举报
回复
为什么会提示???连接失败你不提示不就好了。设个timer 适当的时候再尝试连接。
lurel 2006-02-09
  • 打赏
  • 举报
回复
http://www.pconline.com.cn/pcedu/empolder/gj/cb/0111/11503.html
slchen 2006-02-09
  • 打赏
  • 举报
回复
情况:
服务器关闭和网络不同,主要是程序运行过程中如何知道现在与服务器连接不上,因为这个时候我的程序不停的提示:连接失败。太多了
slchen 2006-02-09
  • 打赏
  • 举报
回复
我是想判断在程序运行过程中的断开,不是程序启动的时候。就是在时间控件执行功能前
sfengnet 2006-02-09
  • 打赏
  • 举报
回复
说错了,是判断是否等于 127.0.0.1
sfengnet 2006-02-09
  • 打赏
  • 举报
回复
Powersock1->LocalIP
sfengnet 2006-02-09
  • 打赏
  • 举报
回复
用PowerSock 查看当前地址是否是 0.0.0.0

如果是,则没联网

如果不是则联上了
pp616 2006-02-09
  • 打赏
  • 举报
回复
最简单的方法 connect一下。连不上就算不通

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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