社区
网络及通讯开发
帖子详情
散分,TClientSocket断开后自动重连服务器问题?
gust99
2003-10-22 11:17:50
问题描述祥见我的另一帖!解决后,再开帖送分!
http://expert.csdn.net/Expert/topic/2372/2372800.xml?temp=.9404261
...全文
165
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
打赏
举报
回复
不会吧,没人想要分!
TCl
ient
Socket
控件和Server
Socket
控件
Delphi
Socket
s程序设计 Cl
ient
Socket
和Server
Socket
,它们对Winsock的API进行了很好的封装生成了
TCl
ient
Socket
和Tserver
Socket
两个类(控件)。通过这两个控件,可以很方便的生成TCP/IP网络应用程序。
TCl
ient
Socket
类是客户端的
Socket
类,通过它可以与
服务器
程序建立TCP连接,并进行数据交换。Tserver
Socket
是服务端的
Socket
类,通过它,应用程序可以提供TCP网络服务,等待用户连接,并在连接后进行数据交换。以下是
Delphi之TServer
Socket
和
TCl
ient
Socket
属性、方法、事件
Delphi的Socke介绍 Cl
ient
Socket
和Server
Socket
,它们对Winsock的API进行了很好的封装生成了
TCl
ient
Socket
和Tserver
Socket
两个类(控件)。通过这两个控件,可以很方便的生成TCP/IP网络应用程序。
TCl
ient
Socket
类是客户端的
Socket
类,通过它可以与
服务器
程序建立TCP连接,并进行数据交换。Tserver
Socket
是服务...
Win
Socket
網絡通信之
TCl
ient
Socket
& TServer
Socket
(續)
Win
Socket
網絡通信之
TCl
ient
Socket
& TServer
Socket
(續)
Delphi
TCl
ient
Socket
组件、Tserver
Socket
组件
Delphi是一种功能强大的面向对象的编程语言,在网络方面,它将windows API封装成许多组件,大大简化了编程的复杂程度。对于一些比较简单的程序,利用Delphi中的一些网络组件,可以轻松地解决
问题
。 下面将说明
TCl
ient
Socket
组件、Tserver
Socket
组件。 一.
TCl
ient
Socket
组件
TCl
ient
Socket
组件主要作为客户端的套接字使用。它封装了客户...
tcl
ient
socket
服务器
断开
如何知道_机房KVM切换器如何安装?故障如何解决?
在
服务器
机房的机架不便于存放多个显示器和键盘的空间里,KVM切换器起着重要的作用。KVM切换器能从本地或远程监视与控制多个计算机与
服务器
,由键盘、鼠标和显示屏组成的KVM控制台是最方便和经济的理想解决方案。平时也有不少朋友问到关于KVM切换器如何安装?有哪些不错的品牌?本期我们一起来了解下。一、什么是KVM切换器所谓KVM,也被称为多电脑控制器,正式的名称为多计算机切换器。简单的说,就是...
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章