Netwerk opdrachten / berichten (Aangepast)

Status
Niet open voor verdere reacties.

ErikBooy007

Terugkerende gebruiker
Lid geworden
24 mei 2007
Berichten
3.814
Ik ben op zoek naar uitleg over het verzenden van berichten over het netwerk.

Wat ik uiteindelijk wil bereiken:


Ik schrijf een programmaatje dat ik op een PC in huis installeer. Op mijn laptop heb ik dan weer een ander programmaatje dat ik kan gebruiken om een commando te sturen om de PC af te sluiten.


Nu is het afsluiten en zo geen probleem, maar hoe krijg ik een opdracht verzonden over het netwerk?

Ik heb naar sockets gekeken, maar ik werd er nog niet echt wijs uit.

Nu is mijn vraag:


Kan iemand mij een code tonen, om berichten het netwerk in te sturen en ze in een ander programma weer uit te lezen?


Ik begrijp dat dat misschien een beetje veel gevraagd is, dus met een goede tutorial over sockets zou ik ook heel blij zijn!

_____________________________
EDIT:

Ik heb nu de volgende codes:

Form1.vb:
Code:
Imports System.Net.Sockets
Imports System.Net


Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim tcp As TcpClient = New TcpClient()
        tcp.Connect("192.168.1.201", 8000)

        Dim networkStream As NetworkStream = tcp.GetStream()

        If networkStream.CanWrite & networkStream.CanRead Then

            Dim sendBytes As Byte() = System.Text.Encoding.ASCII.GetBytes("Haaaaallo")

            networkStream.Write(sendBytes, 0, sendBytes.Length)

            Dim bytes(tcp.ReceiveBufferSize) As Byte
            networkStream.Read(bytes, 0, bytes.Length)

            Dim returnData As String = System.Text.Encoding.ASCII.GetString(bytes)

            lbxMessages.Items.Add("Host returned: " & returnData)

        Else
            If Not networkStream.CanRead Then

                lbxMessages.Items.Add("Kan niet lezen uit de stream")
                tcp.Close()

            Else
                If Not networkStream.CanWrite Then

                    lbxMessages.Items.Add("Kan niet schrijven naar stream")

                End If

            End If

        End If

    End Sub

End Class

Form2.vb:

Code:
Imports System.Net.Sockets
Imports System.Net
Imports System.Text

Public Class Form2

    Private Sub StartConnection()
        ' Must listen on correct port- must be same as port client wants to connect on.
        Const portNumber As Integer = 8000
        Dim ip As IPAddress = IPAddress.Any
        Dim tcpListener As New TcpListener(ip, portNumber)
        tcpListener.Start()
        lbxMessages.Items.Add("Waiting for connection...")
        Try
            'Accept the pending client connection and return 
            'a TcpClient initialized for communication. 
            Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient()
            lbxMessages.Items.Add("Connection accepted.")
            ' Get the stream
            Dim networkStream As NetworkStream = tcpClient.GetStream()
            ' Read the stream into a byte array
            Dim bytes(tcpClient.ReceiveBufferSize) As Byte
            networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
            ' Return the data received from the client to the console.
            Dim clientdata As String = Encoding.ASCII.GetString(bytes)
            lbxMessages.Items.Add(("Client sent: " + clientdata))
            Dim responseString As String = "Connected to server."
            Dim sendBytes() As Byte = Encoding.ASCII.GetBytes(responseString)
            networkStream.Write(sendBytes, 0, sendBytes.Length)
            lbxMessages.Items.Add("Message Sent /> : " + responseString)
            'Any communication with the remote client using the TcpClient can go here.
            'Close TcpListener and TcpClient.
            tcpClient.Close()
            tcpListener.Stop()
            lbxMessages.Items.Add("exit")
        Catch ex As Exception
            lbxMessages.Items.Add(ex.ToString())
        End Try

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form1.Show()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        StartConnection()
    End Sub
End Class

Form2.vb is m'n startup-form (onlogisch, i know) daarop heb ik een button om de connectie te starten en een button om het andere form weer te geven.

Maar als ik de connectie probeer te starten loopt het programma vast. Ik krijg geen foutmelding of iets dergelijkt, maar ik kan gewoon niets meer.

Any ideas?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan