【问题标题】:Hot to use more socket?热使用更多插座?
【发布时间】:2015-04-01 10:12:43
【问题描述】:

我有一个名为 frmmsg 的表单。 当我打开一个新的 frmmsg 时,我收到以下警告:

每个套接字地址(协议/网络地址/端口)只能使用一次 通常是允许的。

如何使用更多套接字打开表单?

这是我正在使用的代码:

Imports System.IO
Imports System.Threading
Imports System.Net.Sockets
Public Class frmmsg
    Dim listener As New TcpListener(8000)
    Dim client As TcpClient
    Dim message As String

    Private Sub frmmsg_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim thread As New Thread(New ThreadStart(AddressOf Listening))
        listener.Start()
    End Sub

    Private Sub listening()
        listener.Start()
    End Sub

    Private Sub btnnewform_Click(sender As Object, e As EventArgs) Handles btnnewform.Click
        Dim fnew As New frmmsg
        fnew.Show()
    End Sub
End Class

问题出在哪里,我该如何解决?

【问题讨论】:

    标签: vb.net sockets tcp


    【解决方案1】:

    从消息中可以看出,每个端口只能打开一个侦听套接字(通常)。

    因此,您必须确保同时只有一个TcpListener(8000) 实例。如果要同时打开多个表单,则需要引用此对象,而不是从表单实例中。也许使用静态/共享变量。

    【讨论】:

    • 你能给我举个例子吗? :D,谢谢你的评论
    • 有什么具体问题吗?
    • 我只是不明白如何使用静态/共享变量,而不是来自表单实例。
    • stackoverflow.com/questions/613998/… 这应该会有所帮助。共享变量在全局范围内具有一个值,而实例变量在每个实例中具有一个值。您需要一个全局 TCP 套接字变量。
    猜你喜欢
    • 2018-11-14
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 2012-08-22
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多