|
cketHandle; session[i-1].remote_connected:=true; {置远程主机已连通标志} session[i-1].Lookingup:=false; {清标志} break; end; end;
file://当远程主机断开时… procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); var i,j,k: integer; begin for i:=1 to sessions do if (session[i-1].CSocket.tag=socket.SocketHandle) and session[i-1].Used then begin session[i-1].remote_connected:=false; {置为未连接} if not session[i-1].client_connected then session[i-1].Used:=false {假如客户机已断开,则置释放资源标志} else for k:=1 to serversocket1.Socket.ActiveConnections do if (serversocket1.Socket.Connections[k-1].SocketHandle=session[i-1].SS_Handle) and session[i-1].used then begin serversocket1.Socket.Connections[k-1].Close; break; end; break; end; j:=sessions; k:=0; for i:=1 to j do begin if session[j-i].Used then break; inc(k); end; if k>0 then {修正会话数组} begin sessions:=sessions-k; setlength(session,sessions); end; edit1.text:=inttostr(sessions); end;
file://当与远程主机通信发生错误时… procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); var i,j,k: integer; begin for i:=1 to sessions do if (session[i-1].CSocket.tag=socket.SocketHandle) and session[i-1].Used then begin socket.close; session[i-1].remote_connected:=false; {置为未连接} if not session[i-1].client_connected then session[i-1].Used:=false {假如客户机已断开,则置释放资源标志} else for k:=1 to serversocket1.Socket.ActiveConnections do if (serversocket1.Socket.Connections[k-1].SocketHandle=session[i-1].SS_Handle) and session[i-1].used then begin serversocket1.Socket.Connections[k-1].Close; break; end; break; end; j:=sessions; k:=0; for i:=1 to j do begin if session[j-i].Used then break; inc(k); end; errorcode:=0; if k>0 then {修正会话数组} begin sessions:=sessions-k; setlength(session,sessions); end; edit1.text:=inttostr(sessions); end;
file://向远程主机发送页面请求… procedure TForm1.ClientSocket1Write(Sender: TObject; Socket: TCustomWinSocket); var i: integer; begin for i:=1 to sessions do if (session[i-1].CSocket.tag=socket.SocketHandle) and session[i-1].Used then begin if session[i-1].Request then begin socket.SendText(session[i-1].request_str); {假如有请求,发送} session[i-1].Request:=false; {清标志} end; break; end; end;
file://远程主机发来页面数据时… procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var i,j: integer; rec_bytes: integer; {传回的数据块长度} rec_Buffer: array[0..2047] of char; {传回的数据块缓冲区} begin for i:=1 to sessions do if (session[i-1].CSocket.tag=socket.SocketHandle) and session[i-1].Used then begin rec_bytes:=socket.ReceiveBuf(rec_buffer,2048); {接收数据} for j:=1 to serversocket1.Socket.ActiveConnections do if serversocket1.Socket.Connections[j-1].SocketHandle=session[i-1].SS_Handle then begin serversocket1.Socket.Connections[j-1].SendBuf(rec_buffer,rec_bytes); {发送数据} break; end; break; end; end;
file://“页面找不到”等错误信息出现时… procedure TForm1.AppException(Sender: TObject; E: Exception); begin inc(invalidrequests); end;
file://查找远程主机定时… procedure TForm1.Timer1Timer(Sender: TObject); var i,j: integer; begin for i:=1 to sessions do if session[i-1].Used and session[i-1].Lookingup then {假如正在连接} begin inc(session[i-1].LookupTime); if session[i-1].LookupTime>lookuptimeout then {假如超时} begin &nbs 上一页 [1] [2] [3] [4] [5] 下一页 没有相关教程
|