[一个不想问的问题]高分,反正我的可用分有的是!

佣工7001 2004-12-15 11:30:42
TClientSocket连接之后,如何断开呢?
我试过如下方法:
1.Active=false;
2.Close();
3.Socket->Close();
问题是,前两种发法好像没有作用,3好像Socket是断开了,但是ClientSocket的Active依然是True。
各位请不吝赐教。
...全文
293 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinghf 2004-12-16
  • 打赏
  • 举报
回复
我用过 可以断开的。
你的SocketEvent 也没有太多的操作不应该有问题。
佣工7001 2004-12-16
  • 打赏
  • 举报
回复
多谢 jinhaiwu(※※※※※※※※※※)
jinhaiwu 2004-12-16
  • 打赏
  • 举报
回复
如果这个类是从socket继承的话,你可以写成
switch(SocketEvent)
{
case seRead:
OnReceive();
break;
default:
oldSocketEvent() ;//这个用老的函数就不影响其他功能了

}
return;
jinhaiwu 2004-12-16
  • 打赏
  • 举报
回复
switch(SocketEvent)
{
case seAccept,
seLookup,
seConnecting,
seListen:{ }
case seConnect: Connect(Socket);
case seDisconnect: Disconnect(Socket);
case seRead: OnReceive();//Read(Socket);
case seWrite: Write(Socket);
}
你的SocketEvent函数应该是类似与这个样子的,连接,断开,读,写 都应该自己写。
佣工7001 2004-12-15
  • 打赏
  • 举报
回复
void __fastcall TFormMachine::TimerPeerTimer(TObject *Sender)
{
TimerPeer->Enabled=false;
if(!cs->Active)
{
cs->Active=true;
//cs->Socket->Open(0,cs->Address,0,cs->Port,false);
}
else
{
// tracker->GetSCFHash();
cs->Active=false;
}

TimerPeer->Enabled=true;
}
佣工7001 2004-12-15
  • 打赏
  • 举报
回复
我也认为不可能吧 , 可是不可能的事情真的发生了!
难道和我替换了OnSocketEvent有关系吗?!
铖邑 2004-12-15
  • 打赏
  • 举报
回复
应该不会,你给出源码看看?
constantine 2004-12-15
  • 打赏
  • 举报
回复
不可能吧
caimomo2002 2004-12-15
  • 打赏
  • 举报
回复
学习!
佣工7001 2004-12-15
  • 打赏
  • 举报
回复
to:yjy1001(蓝鲸--优秀得郁闷的鱼) 很简单,就是我自己封装的连接类里面的事件
__fastcall TConnection::TConnection(TCustomWinSocket *ss)
{ startTickCount=0;
atHead=true;
have=NULL;
socket=(TCustomWinSocket*)ss;
cacheBuf=NULL;
sendSpeed=recSpeed=0.00;
sendCount=recCount=abortCount=0;
errors=new TStringList();
state=ssConnected;
ss->OnSocketEvent=SocketEvent;
}

void __fastcall TConnection::SocketEvent(TObject* Sender, TCustomWinSocket* Socket, TSocketEvent SocketEvent)
{
switch(SocketEvent)
{
case seRead:
OnReceive();
break;
default:
break;
}
return;
}
yjy1001 2004-12-15
  • 打赏
  • 举报
回复
你是任何替换的?!
把替换的代码帖点出来……
佣工7001 2004-12-15
  • 打赏
  • 举报
回复
to: jinhaiwu(※※※※※※※※※※)
请问,那末我如何在我自己封装类中使用OnRead事件,且不影响其他功能
sanyou98 2004-12-15
  • 打赏
  • 举报
回复
up
jinhaiwu 2004-12-15
  • 打赏
  • 举报
回复
回复人: dajianshi(拔剑四顾心茫然) ( ) 信誉:101 2004-12-15 11:58:00 得分: 0


我也认为不可能吧 , 可是不可能的事情真的发生了!
难道和我替换了OnSocketEvent有关系吗?!

//-----------------------------------------
确实有关系;你看看原代码就知道了。
3996906 2004-12-15
  • 打赏
  • 举报
回复
::closesocket(cs->Socket);

试试看啊

1,317

社区成员

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

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