W wzisme Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-21 #1 当有多个clientsocket连到serversocket时,当其中一个不正常退出时serversocket仍然 认为对方还连在上面,请问怎样去刷新?当你向它发送信息时出错,怎样让他不出错呢?
A Alex_Y Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-21 #2 ClientSocket1的Error事件中,将ErrorCode=0设为0即可
S Sachow Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-21 #3 用select试试看,第一个参数填要测试的客户端连接的SocketHandle,第二个参数填超时 的时限,如果返回值为0就可判断客户端已经断开了。前提是在OnClientConnect事件中记录 各个客户端连接的SocketHandle。 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;
用select试试看,第一个参数填要测试的客户端连接的SocketHandle,第二个参数填超时 的时限,如果返回值为0就可判断客户端已经断开了。前提是在OnClientConnect事件中记录 各个客户端连接的SocketHandle。 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;
C cyhan Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-21 #4 对于nonBlock方式 要重载 onErrorEvent 事件,然后在该事件重屏蔽错误码就可以了 socket.onErrorEvent := onMaybeError; 对于Block方式 需要调用Waitfordata进行检测。
对于nonBlock方式 要重载 onErrorEvent 事件,然后在该事件重屏蔽错误码就可以了 socket.onErrorEvent := onMaybeError; 对于Block方式 需要调用Waitfordata进行检测。
W wzisme Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-21 #6 当对方clientsocket不正常断开时,都会在serversocket中发生errorcode=10054的错误, 我知道只要把errorcode改为0就可以了,但是我的意思不是这个,我是说这时serversocket 的ActiveConnections的数目没变,虽然对方不正当断开了,我想知道怎样刷新它,就是说我 用serversocket1.socket.connections[x].close时,仍然出错!
当对方clientsocket不正常断开时,都会在serversocket中发生errorcode=10054的错误, 我知道只要把errorcode改为0就可以了,但是我的意思不是这个,我是说这时serversocket 的ActiveConnections的数目没变,虽然对方不正当断开了,我想知道怎样刷新它,就是说我 用serversocket1.socket.connections[x].close时,仍然出错!
张 张无忌 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-21 #8 只是你在发送数据之前要判断 socket.handle是不是无效的
A armyjiang Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-24 #10 你在使用serversocket1.socket.connections[x].close时,应该先检测一下所用 的SocketHandle是否处于在用状态。如果正常,可以操作,否则不能进行这项操作。 如Sachow所说,这样的做法你需要在前面的工作中保存所连接上的SocketHandle。
你在使用serversocket1.socket.connections[x].close时,应该先检测一下所用 的SocketHandle是否处于在用状态。如果正常,可以操作,否则不能进行这项操作。 如Sachow所说,这样的做法你需要在前面的工作中保存所连接上的SocketHandle。
Y YoungSun Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-09 #11 对头,server会在处理了错误事件后自动关闭这个连接。