特急!!!哪位朋友知道当服务端退出,客户端发送的信息如何解决(在线等待) (100分)

  • 主题发起人 主题发起人 zhengcw
  • 开始时间 开始时间
Z

zhengcw

Unregistered / Unconfirmed
GUEST, unregistred user!
当服务端退出,客户端发送的信息就好象是石沉大海没有回音,我该如何才能得到服务器的回音,
还有当服务器连接而客户端退出时,服务端出现错误信息提示,如何得到信息,并避免出现错误提示
,就好象delphi目录下的demos/Internet/Chat中的例子。谢谢!
 
uses WinSock;

function RecvTimeOut(fd: Cardinal; sec: Word):Integer;
//判断服务器不响应
var
fs: TFDSet;
timeout: TTimeVal;
n: Integer;
begin
FD_ZERO(fs);
FD_SET(fd, fs);
timeout.tv_sec := sec;
timeout.tv_usec := 0;
n := Select(fd+1, @fs, nil, nil, @timeout);
Result := n;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Buf: array [0..255] of Char;
begin
Buf := 'shutdown';
ClientSocket1.Socket.SendBuf(Buf, SizeOf(Buf));
//设超时限制为5秒
if (RecvTimeOut(ClientSocket1.Socket.SocketHandle, 5)=0) then
begin
ShowMessage('服务器不响应,可能是网络故障!');
ClientSocket1.Close;
end;
end;
 
TFDSet与TTimeVal是什么?
 
服务端接到客户端发送的信息后,就发送一个确认信息,如果客户端在规定的
时间内没有收到消息则认为服务端退出。
至于错误信息提示,我想你一定是用了控件。用try Except包起来不就行了?
 
用try Except包起来?如何包,在什么事件中能够捕捉到该错误信息!我用的是4.0版。
 
你用的是什么控件?
 
既然可以定时用Socket,还不如用DComContion连接测试
 
后退
顶部