如何使用VB.NET分离IP地址与端口?
解决ListBox代理分离IP和端口并调用SetProxy的问题
我来给你梳理下具体的实现思路和代码,完全适配你提到的Proxy.SetProxy(ip, Convert.ToInt16(port))方法要求:
核心思路
- 遍历ListBox中的每一个代理条目
- 对每个代理字符串做格式校验(必须包含冒号分隔IP和端口)
- 按冒号拆分字符串,分离出IP地址和端口字符串
- 安全地将端口字符串转换为Int16类型(避免格式错误崩溃)
- 调用指定的
Proxy.SetProxy方法完成设置
VB.NET 实现代码
' 遍历ListBox中的所有代理项(如果只想处理选中项,换成ListBox1.SelectedItems即可) For Each proxyEntry As String In ListBox1.Items ' 先校验代理格式是否合法——必须包含冒号 If proxyEntry.Contains(":") Then ' 按冒号拆分,得到IP和端口的字符串数组 Dim proxyParts() As String = proxyEntry.Split(":"c) ' 清理可能存在的前后空格,避免无效IP/端口 Dim targetIp As String = proxyParts(0).Trim() Dim portText As String = proxyParts(1).Trim() ' 安全转换端口为Int16类型,防止非数字端口引发异常 Dim targetPort As Int16 If Int16.TryParse(portText, targetPort) Then ' 调用你指定的Proxy.SetProxy方法 Proxy.SetProxy(targetIp, targetPort) ' 可选:添加日志或提示,确认设置成功 Debug.WriteLine($"代理设置完成:{targetIp}:{targetPort}") Else ' 端口格式错误时的处理逻辑 Debug.WriteLine($"跳过无效代理:{proxyEntry},端口{portText}不是合法数字") End If Else ' 代理格式错误(无冒号)的处理逻辑 Debug.WriteLine($"跳过无效代理:{proxyEntry},格式不符合IP:Port要求") End If Next
关键细节说明
- 格式校验:先用
Contains(":")过滤掉格式明显错误的代理,避免后续拆分出问题 - 安全转换:用
Int16.TryParse替代直接Convert.ToInt16,这样即使端口是非法字符,也只会跳过该条目,不会导致程序崩溃 - 空格处理:拆分后用
Trim()清理前后空格,防止用户输入时不小心加了空格导致IP/端口无效 - 灵活选择:如果不需要处理所有条目,只需把
ListBox1.Items替换成ListBox1.SelectedItems,就能只处理用户选中的代理
内容的提问来源于stack exchange,提问作者hath hassan
相关产品推荐
相关产品推荐

