代理套接字管理

时间:2013-05-28 17:37:05

标签: c# sockets

我正在尝试使用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;
    }
}

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

对不起我的背英文

1 个答案:

答案 0 :(得分:1)

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

可以找到一篇好文章here