代理套接字管理

本文关键字:管理 套接字 代理 | 更新日期: 2023-09-27 18:15:40

我正在尝试用c#创建一个透明的代理。我能够将我的网络流量传输到代理客户端并将其重定向到代理服务器。它正在工作,但我有两个问题,

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;
    }
}

我的另一个问题是:我应该什么时候关闭我的socket?哪一个应该先关闭?HTTP服务器是否会关闭与代理服务器的连接,或者我应该断开连接?

sorry for my back english

代理套接字管理

我认为这不是单纯的逻辑问题,而是处理并行性的问题。我已经使用SocketAsyncEventArgs实现了一个高性能的异步TCP服务器,它很亮。