社区
网络及通讯开发
帖子详情
散分,TClientSocket断开后自动重连服务器问题?
gust99
2003-10-22 11:17:50
问题描述祥见我的另一帖!解决后,再开帖送分!
http://expert.csdn.net/Expert/topic/2372/2372800.xml?temp=.9404261
...全文
111
10
打赏
收藏
散分,TClientSocket断开后自动重连服务器问题?
问题描述祥见我的另一帖!解决后,再开帖送分! http://expert.csdn.net/Expert/topic/2372/2372800.xml?temp=.9404261
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaoguoru
2004-02-27
打赏
举报
回复
试一下在服务器端检测如果某一客户端断了,你就将那个连接套接字也执行一次关闭操作。
hongliqiu
2003-10-31
打赏
举报
回复
问题是,如果服务器不开,不断的连的话,就会出现缓冲区满的异常
这样的话,等待的时间使它不断延长。
或者重试多次后等待一个比较长的随机时间,再重试连接。如此循环。
Yuehj
2003-10-31
打赏
举报
回复
在Socket的Disconnected事件中打开一个定时器,在定时器事件中重新建立连接,十分有效
代码简单易懂,只需3行代码即可
gust99
2003-10-25
打赏
举报
回复
matq2008(叶子) ,我就是用TEvent实现你的方法的,问题是,如果服务器不开,不断的连的话,就会出现缓冲区满的异常
叶子哟
2003-10-24
打赏
举报
回复
何->果,呵呵
叶子哟
2003-10-24
打赏
举报
回复
俺提供一种笨方法:用个Timer控件,隔一定时间检查一下,如何active=false,则active=true
sunny6281
2003-10-23
打赏
举报
回复
关注
friendbcb
2003-10-22
打赏
举报
回复
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <ScktComp.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TTimer *Timer1;
void __fastcall Timer1Timer(TObject *Sender);
void __fastcall ClientSocketConnect(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall ClientSocketDisconnect(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall ClientSocketError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent,
int &ErrorCode);
void __fastcall FormCreate(TObject *Sender);
void __fastcall ClientSocketConnecting(TObject *Sender,
TCustomWinSocket *Socket);
private: // User declarations
TClientSocket *MyCliSocket ;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
public:
TClientSocket * __fastcall InitClientSocket();
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
MyCliSocket=NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(MyCliSocket)
{
MyCliSocket->Close();
delete MyCliSocket;
}
MyCliSocket=InitClientSocket();
MyCliSocket->Open();
}
//---------------------------------------------------------------------------
TClientSocket * __fastcall TForm1::InitClientSocket()
{
TClientSocket *TempSocket=new TClientSocket(this);
TempSocket->Host="127.0.0.1";
TempSocket->Port=5555;
TempSocket->OnConnect=ClientSocketConnect;
TempSocket->OnDisconnect=ClientSocketDisconnect;
TempSocket->OnError=ClientSocketError;
TempSocket->OnConnecting=ClientSocketConnecting;
return TempSocket;
}
void __fastcall TForm1::ClientSocketConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Timer1->Enabled=false;
Label1->Caption="已连接";
Label1->Update();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocketDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Timer1->Enabled=true;
Label1->Caption="断开连接";
Label1->Update();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocketError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
Label1->Caption="发生错误";
Label1->Update();
ErrorCode=0;
if(Timer1->Enabled==false)
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
if(MyCliSocket==NULL)
MyCliSocket=InitClientSocket();
MyCliSocket->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocketConnecting(TObject *Sender,
TCustomWinSocket *Socket)
{
Label1->Caption="正在连接";
Label1->Update();
}
//---------------------------------------------------------------------------
object Form1: TForm1
Left = 297
Top = 185
Width = 309
Height = 235
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 104
Top = 136
Width = 32
Height = 13
Caption = 'Label1'
end
object Timer1: TTimer
Enabled = False
Interval = 5000
OnTimer = Timer1Timer
Left = 192
Top = 32
end
end
warton
2003-10-22
打赏
举报
回复
up
gust99
2003-10-22
打赏
举报
回复
不会吧,没人想要分!
Delphi之
TCl
ient
Socket
和TServer
Socket
进行TCP长连接通讯使用KeepAlive
自动
发送心跳包检测断网
Delphi之
TCl
ient
Socket
和TServer
Socket
进行TCP长连接通讯,使用KeepALive
自动
发送心跳包检测断网,并实现断线
重连
,经测试可以及时检测到拔掉网线断网情况,具有较高的参考价值
Delphi之TServer
Socket
和
TCl
ient
Socket
属性、方法、事件
Delphi的Socke介绍 Cl
ient
Socket
和Server
Socket
,它们对Winsock的API进行了很好的封装生成了...
TCl
ient
Socket
类是客户端的
Socket
类,通过它可以与
服务器
程序建立TCP连接,并进行数据交换。Tserver
Socket
是服务...
TCl
ient
Socket
和TServer
Socket
属性,方法,事件
Delphi
Socket
s程序设计 Cl
ient
Socket
和Server
Socket
,它们对Winsock的API进行了很好的封装生成了...
TCl
ient
Socket
类是客户端的
Socket
类,通过它可以与
服务器
程序建立TCP连接,并进行数据交换。TserverSoc
三层结构中,客户端如何从
服务器
取数据?
有一系统用ado+
socket
三层方式
服务器
端:Ado--sqlserver 客户端:
socket
连接方式 问: 1.当客户端需要查询或更新数据时,在客户端的cl
ient
dataset的commandtext 里写入语句,让
服务器
端去执行,是否合理? 2.当需要...
用Delphi设计代理
服务器
来源:http://www.cpcw.com 笔者在编写一个上网计费软件时,...因此,考虑是否能编写自己的代理
服务器
,一方面解决群体上网,另一方面又解决上网的计费
问题
呢? 经过实验性编程,终于圆满地解决了该
问题
。现写出来,与
网络及通讯开发
1,316
社区成员
8,873
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章