【问题标题】:I found a proxy example online but it's throwing an exception what could be wrong?我在网上找到了一个代理示例,但它抛出了一个异常,这可能是什么问题?
【发布时间】:2016-06-05 10:55:55
【问题描述】:

我在搜索时在网上找到了一个代理服务器示例,我真的很高兴它坏了,但我设法解决了非常简单的问题,然后我遇到了最大的问题,因为我没有制作这个程序,所以我没有真的知道这一切是如何运作的,所以当我遇到这个错误时,我非常困惑。

Proxy Server Code

好吧,问题出在上面的那一行

sURL = part1.Substring(index1 + 4, part1.Length - index5 - 8)

当有人连接时,这会给我这个错误

System.ArgumentOutOfRangeException {"Length cannot be less than zero Parameter name: length"}

有谁知道问题出在哪里,如果知道,请您解释一下这背后的原因吗?

谢谢。

这里是客户信息

"CONNECT googleads.g.doubleclick.net:443 HTTP/1.1" & vbCrLf & "Host: googleads.g.doubleclick.net:443" & vbCrLf & "Proxy-Connection: keep-alive" & vbCrLf & "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" & vbCrLf & "" & vbCrLf & ""

【问题讨论】:

  • 当您收到Exception 时,能否使用clientmessage 的值更新您的问题。
  • 完成。感谢您帮助我。
  • 异常信息告诉你出了什么问题;在对Substring的调用中,length参数小于0,也就是说计算:part1.Length - index5 - 8小于0。(实际上是-8,因为part1中没有'/')

标签: vb.net exception proxy http-proxy


【解决方案1】:

所以 - 这一点:

Dim index1 As Integer = clientmessage.IndexOf(" "c)
Dim index2 As Integer = clientmessage.IndexOf(" "c, index1 + 1)
If index1 = -1 Or index2 = -1 Then
    Stop
End If
Console.WriteLine("Connecting to Site: {0}", clientmessage.Substring(index1 + 1, index2 - index1))
Console.WriteLine("Connection from {0}", clientSocket.RemoteEndPoint)
Dim part1 As String = clientmessage.Substring(index1 + 1, index2 - index1)

只隔离字符串的googleads.g.doubleclick.net:443 部分。

下一节有问题有两个原因。首先,它使用了一个“幻数”,即8,它可能在原始代码中有效,但现在有点不透明。其次,index3 的行尝试查找字符串中可能存在或不存在的/

也许最初的程序员一直在处理一些复杂的 URL,但这对你来说不是问题,因此代码给出了一个异常,因为用于分配 sURL 的索引组合基本上是无效的:

Dim index3 As Integer = part1.IndexOf("/"c, index1 + 8)
Dim index4 As Integer = part1.IndexOf(" "c, index1 + 8)
Dim index5 As Integer = index4 - index3
sURL = part1.Substring(index1 + 4, part1.Length - index5 - 8)

由于您只需要剥离端口即可获取主机名,因此您可以尝试将上面的这四行注释掉并替换为:

sURL = part1.Substring(0, part1.LastIndexOf(":"))

这更像是猜测而不是答案,但我无法将其全部写在评论中!

【讨论】:

  • 尽管这太多了,不适合发表评论,但您仍然帮助我解决了这个问题,谢谢。
猜你喜欢
  • 2015-11-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 2020-05-28
相关资源
最近更新 更多