C# 端口号和URL';s

C# 端口号和URL';s,c#,webclient,port,C#,Webclient,Port,我们的应用程序向用户请求URL,但是URL可能包含.com或.com.uk(任何国家/地区名称)地址结束后的信息 例如,用户可以向我们提供地址 www.example.com/sample/userbin?form=sl&t= 当然,上面的URL是虚构的,不会起作用,但它说明了我的观点 我们的应用程序还存储连接数据,使应用程序能够通过代理服务器等访问internet。它还允许用户指定端口号,但我们注意到WebClient不提供端口号的成员 唯一的另一种方法是将端口号附加到URL中,但当我们不知道

我们的应用程序向用户请求URL,但是URL可能包含.com或.com.uk(任何国家/地区名称)地址结束后的信息

例如,用户可以向我们提供地址
www.example.com/sample/userbin?form=sl&t=

当然,上面的URL是虚构的,不会起作用,但它说明了我的观点

我们的应用程序还存储连接数据,使应用程序能够通过代理服务器等访问internet。它还允许用户指定端口号,但我们注意到WebClient不提供端口号的成员


唯一的另一种方法是将端口号附加到URL中,但当我们不知道用户提供的URL时,如何才能做到这一点?

我不知道这是否有帮助,但URL中的端口直接位于主机名之后,前面有冒号

示例:(www.Example.com,端口8080)


你为什么不知道域名?如果用户输入了有效的URL,它将匹配以下模式:

//<domain>/path/file/whatever
///path/file/which

/path/file/随便什么
添加端口:

<domain>:<port>/path/file/whatever
:/path/file/which

您可以按/或将其拆分?例如:

http://google.com|?search=cats
http://google.com|/mail
分裂在哪里。URL后面唯一可能的字符是/和?。因此,您可以执行以下操作:

http://google.com|/mail 
拆分,然后在域后追加端口,然后在末尾追加额外端口,如下所示:

http://google.com:8080/mail

我想这就是你的意思。

域名可以是任何东西。。。。因此,看起来我们需要做的就是从URL中删除域并附加端口。正确的方法是:根据*/(即:http://,https://,ftp://,等等)和下一个/。所以“/”或“?”是域后面唯一的字符?非常确定,除非它们已经提供了端口(您可以使用:)进行检查。我从未见过使用其他任何东西,但您可能希望检查rfc规范。
http://google.com|/mail 
http://google.com:8080/mail