socket做代理服务器的问题(100分)

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

zeroworld

Unregistered / Unconfirmed
GUEST, unregistred user!
当用Tserversocket和Tclientsocket做代理服务器时
当访问的网页很大时,就出现传输塞住的现象,别的连接都不能访问哦
请问该怎么解决,主要问题出在这个部分,通讯方式为
nonblocking
procedure TfrmMain.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
i, j,n: integer;
rec_bytes: integer; {传回的数据块长度}
rec_Buffer: array[0..2043] of char; {传回的数据块缓冲区}
rec:variant;
begin
for i := 1 to sessions do
if (session[i - 1].CSocket.tag = socket.SocketHandle) and
session[i - 1].Used then
begin
n:=socket.ReceiveLength;
rec_bytes := socket.ReceiveBuf(rec_buffer, 2043); {接收数据}
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;
 
不用这句n:=socket.ReceiveLength
 
n:=socket.ReceiveLength
这句我只是加上去试试看的,其实没有什么用,也没有用到
我之前没有这一句时,一样的有问题,问题也一样
 
这好像是电脑报上的一个例子,我也试过,可行性不强,客户端数目限制很大,另外,
也没有很好的错误处理,建议不要用此方法来实际操作。
Delphi中的Socket控件通讯质量本身就不怎么好,要么自己另外写通讯函数,或者换C、Java
用多线程来写的话,实用性可能才会增强。
 
winshoes组件中有一个proxy的demo 用的是自己的tmapport 实用性应该可以
 
可是我这里没有找到winshoes,能不能发一个给我,谢谢了
zeroworld@263.net //bow
 
to g622,winshies我找到了,谢谢了,不过我不知道哪个是proxy的demo
BasicDNS
BFTP
CBuilder
CGI_Mailer
Chat
CS
FTP_Put_File
HTTP_Client
HTTP_Server
IPWatch
MailDLL
MappedPort
NGScan
NNTP_Client
NNTP_Server
Ping
Pop3
POP3Server
SimpleFTP
SMTP
SubDirectory
Tunnel
UDPCS
是哪个呀?//bow
 
我给你发一份
winshoes7039b
或者你找indy也可以的
 
to g622
你给我发一份吧//bow
 
接受答案了.
 
后退
顶部