0
我试图用c#创建一个透明代理。我能够将我的网络流量转移到我的代理客户端,并将其重定向到我的代理服务器。它的工作,但我有2个问题,代理套接字管理
1 - 它很慢,最大速度是60kbps,这是我如何我的服务器和代理客户
while (SocketConnected(tcp_link.Client) &&
SocketConnected(_tcp.Client) &&
!ioError)
{
try
{
Thread.Sleep(1);
if (streamLink.DataAvailable)
{
byte[] l_buffer = new byte[4096];
int l_read = streamLink.Read(l_buffer, 0, l_buffer.Length);
byte[] l_data = new byte[l_read];
Array.Copy(l_buffer, l_data, l_data.Length);
byte[] l_send = MBR.reverse(l_data);
_stream.Write(l_send, 0, l_send.Length);
}
if (_stream.DataAvailable)
{
byte[] c_buffer = new byte[4596];
int c_read = _stream.Read(c_buffer, 0, c_buffer.Length);
byte[] c_data = new byte[c_read];
Array.Copy(c_buffer, c_data, c_data.Length);
byte[] c_send = MBR.reverse(c_data);
streamLink.Write(c_send, 0, c_send.Length);
}
}
catch (Exception ex)
{
onErrorLog(this, new ErrorLogEventArgs(ex));
ioError = true;
}
}
我的其他问题之间传送业务:当我应该关闭我的套接字?哪一个应该先关闭?是http服务器将关闭与我的代理服务器连接或我应该断开连接?
对不起我的背英语
是否有原因您没有使用[Socket类]的Begin ...和End ...模式(http://msdn.microsoft.com/zh-cn/library/600stss7.aspx) ?如果你重构那些你可以摆脱Thread.Sleep(1)造成延迟的反正。 – rene
我也是这样做的,速度没有变化甚至更糟 –