【问题标题】:client can not connect againt to my Socket Server - VB.NET客户端无法再次连接到我的套接字服务器 - VB.NET
【发布时间】:2015-09-04 21:39:47
【问题描述】:

我有一个线程和一个套接字服务器来监听客户端。客户端软件不适合我,它是向我的程序发送数据的实验室软件。

当监听开始时没有问题,但是当客户端软件关闭并重新打开时,无法向我的软件发送任何数据。

我的监听器每次都必须像服务一样运行。

这是我的代码:

Delegate Sub WriteMsgHandle(ByVal Msg As String)
Dim handler As WriteMsgHandle

Dim THS As ThreadStart
Dim TH As Thread
Private Sub btnListen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnListen.Click
    Try
        btnListen.Enabled = False

        THS = New ThreadStart(AddressOf Listen)
        TH = New Thread(THS)
        TH.Start()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub
Public Sub Listen()
    Dim bytesReceived As Integer = 0
    Dim recv() As Byte = New Byte(1) {}
    Dim clientSocket As Socket
    Dim listenerSocket As New Socket _
        (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
    Dim IPHost As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim localadd As IPAddress = IPAddress.Parse(txt_ip.Text)
    Dim ipepServer As IPEndPoint = New IPEndPoint(localadd, txt_port.Text)
    handler = AddressOf WriteMsg
    listenerSocket.Bind(ipepServer)
    listenerSocket.Listen(-1)
    clientSocket = listenerSocket.Accept()

    Dim msgcount As Integer = 0

    If clientSocket.Connected Then

        MsgBox("Connected")

        Do
            bytesReceived = clientSocket.Receive(recv)
            Dim Msg As String

            Msg = Encoding.ASCII.GetString(recv)
            Invoke(handler, Msg)

        Loop While bytesReceived <> 0

    End If
End Sub

【问题讨论】:

    标签: vb.net sockets


    【解决方案1】:
    1. 您只接受一次。您需要循环接受。
    2. If clientSocket.Connected Then你为什么加这个?删除那张支票。套接字刚刚被接受,因此它已连接。即使它已断开连接,您是否只想忽略该错误情况?!
    3. 接收循环正确。
    4. 您可能希望在新线程上启动每个接受的客户端(或使用异步 IO)。

    【讨论】:

    • 谢谢,但我需要知道从客户端接收到的数据何时结束,以便为它发送一个字符串。我怎么知道?
    猜你喜欢
    • 2013-12-05
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 2016-06-08
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多