Foxtable(狐表)用户栏目专家坐堂 → 如何遍历去重,并根据遍历去重的port启动多个不同的http服务,实现对应的函数页面对应port进行指定地址的访问


  共有2391人关注过本帖树形打印复制链接

主题:如何遍历去重,并根据遍历去重的port启动多个不同的http服务,实现对应的函数页面对应port进行指定地址的访问

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
如何遍历去重,并根据遍历去重的port启动多个不同的http服务,实现对应的函数页面对应port进行指定地址的访问  发帖心情 Post By:2021/5/7 23:19:00 [只看该作者]

如何遍历去重,并根据遍历去重的port启动多个不同的http服务,实现对应的函数页面对应port进行指定地址的访问


内部函数表有如下字段:
函数名称  类别  port 

Dim dt As DataTable = DataTables("内部函数表")
For Each dr As DataRow In dt.DataRows
    If dr.Isnull("port") Then
        output.show("http://127.0.0.1/" & dr("函数名称") & "." & dr("类别"))
    Else
        output.show("http://127.0.0.1:" & dr("port") & "/" & dr("函数名称") & "." & dr("类别"))
    End If
Next


运行得到
http://127.0.0.1/utf8.htm
http://127.0.0.1:3000/sem.htm
http://127.0.0.1/default.htm
http://127.0.0.1/jihua.htm
http://127.0.0.1/jihua2.htm
http://127.0.0.1/mail.htm
http://127.0.0.1/mailQQ.htm
http://127.0.0.1/计划.htm
http://127.0.0.1:3001/测试.htm
http://127.0.0.1/删除附件地址.htm



怎么实现在遍历的时候去除重复值呢?【红色部分代码怎么修正,让输出的结果只有0,3000,3001三个值】
Dim dt As DataTable = DataTables("内部函数表")
For Each dr As DataRow In dt.DataRows
        output.show(dr("port")) 
Next
运行得到:
0
3000
0
0
0
0
0
0
3001
0

便于在启动http服务的时候根据获取得到的0,3000,3001三个值对应启动三个服务。

Dim dt As DataTable = DataTables("内部函数表")
For Each dr As DataRow In dt.DataRows
    If dr.Isnull("port") Then
        HttpServer.Extensions.Add("http://127.0.0.1/" )
    Else
        HttpServer.Extensions.Add("http://127.0.0.1:" & dr("port") & "/" )
    End If
Next
只根据0,3000,3001三个值对应启动三个服务
http://127.0.0.1/
http://127.0.0.1:3000/
http://127.0.0.1:3001/


进而实现直接打开如下链接
http://127.0.0.1/utf8.htm
http://127.0.0.1:3000/sem.htm
http://127.0.0.1/default.htm
http://127.0.0.1/jihua.htm
http://127.0.0.1/jihua2.htm
http://127.0.0.1/mail.htm
http://127.0.0.1/mailQQ.htm
http://127.0.0.1/计划.htm
http://127.0.0.1:3001/测试.htm
http://127.0.0.1/删除附件地址.htm

[此贴子已经被作者于2021/5/7 23:31:46编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107756 积分:548119 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/8 9:04:00 [只看该作者]

利用集合判断去重

Dim dt As DataTable = DataTables("内部函数表")
dim lst as new list(of string)
dim s as string
For Each dr As DataRow In dt.DataRows
    If dr.Isnull("port") Then
        s = "http://127.0.0.1/" & dr("函数名称") & "." & dr("类别")
    Else
        s= "http://127.0.0.1:" & dr("port") & "/" & dr("函数名称") & "." & dr("类别")
    End If
if lst.contains(s) = false
lst.add(s)
output.show(s)
end if
Next

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)利用集合判断去重Dim dt As DataTabl...  发帖心情 Post By:2021/5/8 9:53:00 [只看该作者]

Dim dt As DataTable = DataTables("内部函数表")
Dim lst As new List(of String)
HttpServer.Close()
For Each dr As DataRow In dt.DataRows
    If lst.contains(dr("port")) = False
        lst.add(dr("port"))
        If dr("port")=0 Then
            output.show(dr("port"))
            HttpServer.Prefixes.Add("http://127.0.0.1/" )
            HttpServer.Start()
        Else
            output.show(dr("port"))
            HttpServer.Prefixes.Add("http://127.0.0.1:" & dr("port") & "/" )
            HttpServer.Start()
        End If     
    End If
Next

老师你好  根据你的指导  现在代码如上:
初步实现启动0,3000,3001三个端口的http服务了。

在查询帮助文档中
  • IsRunning 逻辑型,用于判断HppServer是否正在运行。

If httpserver.IsRunning = True Then
    MessageBox.Show("1")
End If

这个代码可以弹出1,说明http服务是已经运行了,有没有办法完善代码,让之判断是哪一个端口的服务已经运行了呢,这样好实现已经运行的关闭,没有运行的启动。

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107756 积分:548119 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/8 10:08:00 [只看该作者]

没有办法判断,整个停掉,加上新的地址全部重新启动即可

 回到顶部