有那位高手知道如何释放(清空)SOCKET发送缓冲区?

wker 2003-05-23 05:25:57
有那位高手知道如何释放(清空)SOCKET发送缓冲区?
...全文
302 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sczyq 2003-05-24
  • 打赏
  • 举报
回复
// .H
......
class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabeledEdit *Host;
TLabeledEdit *Port;
TBitBtn *Open;
TMemo *Memo1;
TTimer *Timer1;
void __fastcall OpenClick(TObject *Sender);
void __fastcall ClientSocketConnect(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall ClientSocketError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent,
int &ErrorCode);
void __fastcall Timer1Timer(TObject *Sender);
private: // User declarations
TClientSocket *ClientSocket;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
......

// .CPP

//---------------------------------------------------------------------------
void __fastcall TForm1::OpenClick(TObject *Sender)
{
Open->Enabled = false;
if (ClientSocket)
{
delete ClientSocket;
ClientSocket = NULL;
}
ClientSocket = new TClientSocket(this);
ClientSocket->OnConnect = ClientSocketConnect;
ClientSocket->OnError = ClientSocketError;
ClientSocket->Host = Host->Text;
ClientSocket->Port = Port->Text.ToIntDef(1);
Memo1->Lines->Add("正在连接: " + Now().TimeString());
ClientSocket->Open();
Timer1->Tag = 0;
Timer1->Enabled = true;
Open->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocketConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("连接端口成功: " + Now().TimeString());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocketError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
Memo1->Lines->Add("主机无此端口: " + Now().TimeString());
Timer1->Enabled = false;
ErrorCode = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer1->Tag++;
if (ClientSocket)
if (ClientSocket->Active)
{
Memo1->Lines->Add("连接成功 : " + Now().TimeString());
Timer1->Enabled = false;
ClientSocket->Close();
}
else if (Timer1->Tag > 50) // Timer1->Interval = 100, 即0.1秒
// 所以,Tag = 50 指5秒,
{
delete ClientSocket;
ClientSocket = NULL;
Timer1->Enabled = false;
Memo1->Lines->Add("无法找到主机: " + Now().TimeString());
}
}
//---------------------------------------------------------------------------
sczyq 2003-05-23
  • 打赏
  • 举报
回复
up

我也正在为此烦着,我用TClientSocket,

用异步方式,想在5秒内不能连上,就放弃
wker 2003-05-23
  • 打赏
  • 举报
回复
不是接收的内存变量,而是说要清空系统自动分配给一个socket的发送缓冲区
Atomictry 2003-05-23
  • 打赏
  • 举报
回复
memset(buf,0,sizeof(buf));
wjyww 2003-05-23
  • 打赏
  • 举报
回复
你用的什么socket呢?
wjyww 2003-05-23
  • 打赏
  • 举报
回复
接分,透明阿

1,316

社区成员

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

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