Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net服务器套接字在新客户端接受新客户端后关闭以前的客户端_Vb.net_Sockets - Fatal编程技术网

vb.net服务器套接字在新客户端接受新客户端后关闭以前的客户端

vb.net服务器套接字在新客户端接受新客户端后关闭以前的客户端,vb.net,sockets,Vb.net,Sockets,正如我在标题中所说的,服务器不侦听以前客户端的数据包。我 只需要服务器读取来自多个客户端的所有数据包 这是我的代码,谢谢你的帮助 serverSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) Dim ipAddress As IPAddress = ipAddress.Parse("192.168.2.202") Dim IpEndPoint As IP

正如我在标题中所说的,服务器不侦听以前客户端的数据包。我 只需要服务器读取来自多个客户端的所有数据包

这是我的代码,谢谢你的帮助

    serverSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
    Dim ipAddress As IPAddress = ipAddress.Parse("192.168.2.202")
    Dim IpEndPoint As IPEndPoint = New IPEndPoint(ipAddress, 15002)
    serverSocket.Bind(IpEndPoint)
    serverSocket.Listen(1500)
    serverSocket.BeginAccept(New AsyncCallback(AddressOf OnAccept), Nothing)
代理Sub_OnAccept(由Val ar作为IAsyncResult) 私有Sub-OnAccept(按IAsyncResult的值ar)

客户端(套接字) 特例

    End Try


    AddClient(clientSocket)
End Sub
Delegate Sub _AddClient(ByVal client As Socket) 'delege used to invoke AddCLient()
Private Sub AddClient(ByVal client As Socket)

    If InvokeRequired Then
        Invoke(New _AddClient(AddressOf AddClient), client)

        Exit Sub
    End If
    Dim lvi As New ListViewItem(client.LocalEndPoint.ToString)
    lvi.Tag = client
    ListBox1.Items.Add(client.RemoteEndPoint.ToString & " Bağlandı")

End Sub
    End Try

End Sub
代表子项接收(由VAL ar作为IAsyncResult) 收到的专用子系统(由VAL ar作为IAsyncResult) 如果需要,那么 调用(新的_onreceive(onreceive的地址),ar) 出口接头 如果结束

    Dim client As Socket = ar.AsyncState
    Try
        client.EndReceive(ar)
    Catch ex As Exception

    End Try

    Dim bytesRec As Byte() = byteData
    Dim paket As String = System.Text.ASCIIEncoding.ASCII.GetString(bytesRec)

    Dim temizip As String
    temizip = Replace(paket, Chr(0), Chr(32))
    temizip = temizip.Trim

    Dim msg As String = temizip

    Try

        Dim boyut As Integer
        boyut = msg(0) & msg(1)
        boyut = boyut - 10

        Dim externalip As String
        externalip = msg.Remove(0, 2)
        externalip = externalip.Remove(boyut, (externalip.Length - boyut))

       If clientlist.Contains(externalip) Then
        Else
            clientlist.Add(externalip)

        End If





    Catch ex As Exception

    End Try


    Try
        clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, New AsyncCallback(AddressOf OnRecieve),
客户端(套接字) 特例

    End Try


    AddClient(clientSocket)
End Sub
Delegate Sub _AddClient(ByVal client As Socket) 'delege used to invoke AddCLient()
Private Sub AddClient(ByVal client As Socket)

    If InvokeRequired Then
        Invoke(New _AddClient(AddressOf AddClient), client)

        Exit Sub
    End If
    Dim lvi As New ListViewItem(client.LocalEndPoint.ToString)
    lvi.Tag = client
    ListBox1.Items.Add(client.RemoteEndPoint.ToString & " Bağlandı")

End Sub
    End Try

End Sub
感谢我解决了这个问题的人,我为每个客户机声明新的clientsocket及其解决方案。
我只是从头代码中删除clientSocket变量,然后在每个线程上重新声明它。

这里的要点很小,但是对于整数类型,
boyut=msg(0)&msg(1)
?将
选项置于
上以修复这些小错误。你调试了你的
OnReceive
事件了吗?当一个新的客户端连接服务器并停止在以前的客户端上侦听时,所有的tehm都工作正常,这方面有一个小错误。我需要同时开始接收所有客户。它将关闭以前的客户端并开始侦听新客户端。有关设置问题格式的帮助,请单击编辑器中的橙色问号。另外,请注意标记不是关键字。在标签列表中塞满与问题相同的单词(套接字、多个、客户端)无助于对其进行分类。务必阅读选择标签时出现的说明!