Netwerk

Status
Niet open voor verdere reacties.

kabourterplop

Gebruiker
Lid geworden
25 feb 2007
Berichten
323
Hallo,

Ik wou iets nieuws (voor mij) gaan proberen. Dat is het volgende
een client en server programma die onderling verbinding hebben.

Dit heb ik dus. Maar nu het volgende als ik dit gebruik kan ik de rest van de functies
in mijn programma niet gebruiken. Hoe kan ik dit wel gebruiken?

Gr. Bart
 
uuuuuuuuuuhm
je bedoelt, als je een connectie hebt met jou programma met jou server-programma, dat de rest van je programma niet meer werkt? wat is je code dan? Zonder dat valt er weinig te helpen:p
 
Code:
    Shared Sub Connect(ByVal server As [String], ByVal message As [String])
        Try
            ' Create a TcpClient.
            ' Note, for this client to work you need to have a TcpServer 
            ' connected to the same address as specified by the server, port
            ' combination.
            Dim port As Int32 = 13000
            Dim client As New TcpClient(server, port)

            ' Translate the passed message into ASCII and store it as a Byte array.
            Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(message)

            ' Get a client stream for reading and writing.
            '  Stream stream = client.GetStream();
            Dim stream As NetworkStream = client.GetStream()

            ' Send the message to the connected TcpServer. 
            stream.Write(data, 0, data.Length)

            Console.WriteLine("Sent: {0}", message)

            ' Receive the TcpServer.response.
            ' Buffer to store the response bytes.
            data = New [Byte](256) {}

            ' String to store the response ASCII representation.
            Dim responseData As [String] = [String].Empty

            ' Read the first batch of the TcpServer response bytes.
            Dim bytes As Int32 = stream.Read(data, 0, data.Length)
            responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
            Console.WriteLine("Received: {0}", responseData)

            ' Close everything.
            stream.Close()
            client.Close()
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException: {0}", e)
        Catch e As SocketException
            Console.WriteLine("SocketException: {0}", e)
        End Try

        Console.WriteLine(ControlChars.Cr + " Press Enter to continue...")
        Console.Read()
    End Sub 'Connect



    Private Sub listenStream()
        Dim server As TcpListener
        server = Nothing
        Try
            ' Set the TcpListener on port 13000.
            Dim port As Int32 = 13000
            Dim localAddr As Net.IPAddress = Net.IPAddress.Parse(ipAddress.ToString)
            Dim addr = "192.168.1.105"

            server = New TcpListener(localAddr, port)

            ' Start listening for client requests.
            server.Start()

            ' Buffer for reading data
            Dim bytes(1024) As Byte
            Dim data As String = Nothing

            ' Enter the listening loop.
            While True
                MsgBox("Waiting for a connection... ")

                ' Perform a blocking call to accept requests.
                ' You could also user server.AcceptSocket() here.
                Dim client As TcpClient = server.AcceptTcpClient()
                MsgBox("Connected!")

                data = Nothing

                ' Get a stream object for reading and writing
                Dim stream As NetworkStream = client.GetStream()

                Dim i As Int32

                ' Loop to receive all the data sent by the client.
                i = stream.Read(bytes, 0, bytes.Length)
                While (i <> 0)
                    ' Translate data bytes to a ASCII string.
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                    MsgBox("Received: {0}", data)

                    ' Process the data sent by the client.
                    data = data.ToUpper()
                    Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)

                    ' Send back a response.
                    stream.Write(msg, 0, msg.Length)
                    MsgBox("Sent: {0}", data)

                    i = stream.Read(bytes, 0, bytes.Length)

                End While

                ' Shutdown and end connection
                client.Close()
            End While
        Catch e As SocketException
            MsgBox(e)
        Finally
            server.Stop()
        End Try

        MsgBox(ControlChars.Cr + "Hit enter to continue....")
        Console.Read()
    End Sub 'Main
 
Wat de fout is weet ik niet, hij blijft in een loop lopen maar dat is natuurlijk om verbindingen te accepteren want die kunnen op elk moment komen.
Hoe kan ik ervoor zorgen dat de rest van mijn programma nog wel werkt en dat het controleren op verbindingen dat dat ook nog eens actief blijft.
 
in 6.0 heb je "DoEvents" dat ervoor zorgt (in een loop) dat de rest van je prog niet freezed... ik weet niet of het ook bestaat in jou VB
 
Ik heb het volgende dan op internet gevonden application.doevents() voor vb.NET maar ook dit helpt niet.

Ik heb nu een herziende versie zonder de while, maar het programma blijft dan alsnog vast staan totdat de client probeert te connecten. Dus hoe los ik dat dan op?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan