【发布时间】:2012-10-07 10:34:53
【问题描述】:
我正在开发一个 http 代理应用程序,一切正常(客户端可以连接到服务器并获取内容),问题既不是 HTTP 服务器也不是浏览器关闭 TCP 连接。我不确定我是否做对了,代码如下:
while (tcp_link.Connected && _tcp.Connected && !ioError)
{
try
{
Thread.Sleep(100);
if (streamLink.DataAvailable)
{
byte[] l_buffer = new byte[10000];
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);
_stream.Write(l_data, 0, l_data.Length);
}
if (_stream.DataAvailable)
{
byte[] c_buffer = new byte[10500];
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);
streamLink.Write(c_data, 0, c_data.Length);
}
}
catch
{
ioError = true;
}
}
我有相同的代码双方(代理客户端和代理服务器)
注意:浏览器将连接到代理客户端(在同一台计算机上),代理客户端将连接到代理服务器,显然代理服务器将连接到http服务器,原因是我之前不想编码数据发送出去
【问题讨论】:
-
可以考虑用socket.Available初始化byte[]。这段代码不知道你想要什么
标签: c# sockets networking network-programming