代理服务器编程中客户端和远程端速度不匹配问题!!!!!(50分)

G

ghqisme

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在用做代理服务器时遇到一个难题,百思不得其解,望有高人指点迷津!!!
主要一段在下面,当客户端有数据来时会触发该过程,其中FRemoteSocket为连接远程
主机的套接字
procedure ClientDataAvailable(Sender:Tobject;Error:Word);
begin
..//省略若干............
if FsocksState=SocksData then //判断客户端此时是否在数据传送状态;
begin
R4:=FClientSocket.ReceiveStr;
if R4='' then
begin FClientSocket.close ;
exit;
end;
//从判断远程客户端是否在连接着,然后把客户端数据发给它;
if FRemoteSocket.State =Wsconnected then
begin
FRemoteSocket.SendStr(R4) ;
end
else Self.InternalClose(Client);
exit;
end;
问题是当客户端上传的速度的太快,而我代理服务器还没来得及把所有的数据都发完。造成
上传不完全;各位有何良策,共同来探讨学习。分数不是问题,只要有好主意思路,
我会再给200分。
 
开个线程,弄个队列。。。
 
同意XIAO.LIT
不过,一般的做法好象是用一个线程读用户数据,存入队列,再用另一个线程读队列。
 
我是用ICS来做底层,是以事件驱动的,用线程不太好。
 
做这类的服务器开发,不要用ICS,最好是自己用API写,利用内核对象和异步I/O
,容易控制呀,
 
顶部