TClientSocket问题?

daydayup234 2006-06-12 03:40:11
如果socket服务器没有打开,
运行ClientSocket1->Open();
会提示
windows socket error:由于目标机器积极拒绝,无法连接。(10061),on API 'connect'
我如何拦截这个错误提示,别让它显示,自己处理改变提示。
void __fastcall Tmain_::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
中好象不行。
...全文
356 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
netsys2 2006-06-14
你说哪些干吗?

你提问题,我好心回答,还做了测试。

有错吗?

我也向你道歉,并保证永远不会再犯同样的错误。

不要给我一分!否则我将删除该贴。
回复
daydayup234 2006-06-14
1 向netsys2(来电!) 道歉。原因有2:
其一:没有遵照你要求:“后面的不要回复了!”
其二:我将贴挪到 茶馆 了。
但是我不是因为自己“太粗心了”倒的歉。
同时,向netsys2专家为这个问题,亲自测试表示感谢。

2 我不得不再说——问题没有解决!!!

根本"通信不能建立,请检查线路"不显示。
代码完全按照netsys2一步一步给的。
#ifndef Unit1H
#define Unit1H
#include <Classes.hpp>
#include <Controls.hpp>
#include <ScktComp.hpp>
#include <StdCtrls.hpp>
//--------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:
TClientSocket *ClientSocket1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent,
int &ErrorCode);
public:
__fastcall TForm1(TComponent* Owner);
};
//--------------------------------------------------------------------------
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){}
//--------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientSocket1->Active=true;
}
//--------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
if(ErrorCode==10061)
ShowMessage("通信不能建立,请检查线路");
ErrorCode = 0;
}
//--------------------------------------------------------------------------
因为我有kv2006开着,相信一把它,不是病毒作祟。
想请netsys2及其其它大虾详细指正我“粗心”所在。

我也提点要求,不要因为自己机器运行完全顺利。
就无端武断地认定别人的问题绝对是“粗心”造成。


3 另外,在此向过往帖子中,自己真正的“粗心”向相关网友道歉
回复
daydayup234 2006-06-13
问题没解决。。。
回复
netsys2 2006-06-13
你太粗心了,ClientSocket1Error绝对可以检查这个错误!

我才测试过的!

new一个project,抓一个ClientSocket,设置它IP和端口(1000),
设置它的错误事件:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientSocket1->Active = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
if( ErrorCode == 10061 )
ShowMessage("通信不能建立,请检查线路");
ErrorCode = 0;
}

结题!
后面的不要回复了!
回复
daydayup234 2006-06-13
1000呀
回复
sxzqlzx 2006-06-13
看你的端口
回复
daydayup234 2006-06-13
跟kv无关啊,
不知何故啊
回复
touyunnaozhang 2006-06-13
江明防火墙会拦截IP PING入,也拦截TClientSocket,这个现象我碰到过,你关掉防火墙试试
回复
daydayup234 2006-06-12
ClientSocket1->Open();
if(!ClientSocket1->Active)
ShowMessage("你看看服务器大概没有打开");
这个能捕到

try
catch
捕不到
怪了
回复
daydayup234 2006-06-12
程序这部分没错,用localhost
只要服务器开了,就没那个错误提示的

netsys2(来电!) ( ) 信誉:122
的方法能具体点不
回复
acbbli 2006-06-12
ErrorCode= 0都不行说明这个事件没有响应,或者出错提示跟这个没关系。跟踪一下程序,看错误到底出在哪。
回复
netsys2 2006-06-12
用try catch

用getlasterror取错误号
回复
daydayup234 2006-06-12
难道跟江民黑客防火有关
回复
daydayup234 2006-06-12
不行啊。
不但捕捉不到10061

甚至简单ErrorCode=0;都无用啊
回复
pp616 2006-06-12
把ErrorCode改成0
回复
相关推荐
发帖
茶馆
创建于2007-08-02

529

社区成员

C++ Builder 茶馆
申请成为版主
帖子事件
创建了帖子
2006-06-12 03:40
社区公告
暂无公告