Programm2 Empfängt nichts (Tcp IP)

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von kodos.

    Programm2 Empfängt nichts (Tcp IP)

    Ich habe folgendes problem ich möchte zwei programme schreiben eins das sendet und eins das bei einem bestimten satz der gesendet wir eine aktion ausfürt bzw ich möchte das gesendete als string weiter in Program 2 verwenden

    Program 1

    Imports System.Net.Sockets, System.Threading, System.IO
    Public Class Form1
    Dim client As tcpclient
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If TextBox2.Text = "" Then
    MsgBox("bitte text eingeben")
    Else

    client = New TcpClient(TextBox1.Text, 8000)
    Dim writer As New StreamWriter(client.GetStream())

    writer.Write(TextBox2.Text)
    TextBox2.Clear()
    writer.Flush()

    End If
    End Sub
    End Class

    und programm 2

    Imports System.Net.Sockets, System.Threading, System.IO

    Dim listener As New TcpListener(8000)
    Dim client As TcpClient
    Dim shutdownCommand As String


    Form1_load
    listener.Start()
    Dim listthread As New Thread(New ThreadStart(AddressOf listening))
    listthread.Start()



    Private Sub Tmrlistener_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tmrlistener.Tick
    If listener.Pending = True Then
    shutdownCommand = ""
    client = listener.AcceptTcpClient

    Dim reader As New StreamReader(client.GetStream())
    While Reader.Peek > -1
    shutdownCommand = shutdownCommand + Convert.ToChar(reader.Read()).ToString
    End While
    MsgBox(shutdownCommand)
    End If
    End Sub
    End Class

    Ich ghlaube das das problem an programm zwei lieg und er die daten nicht empfangen möchte

    bitte um Hilfe
    Hallo,
    Zuerst einmal kannst du Code hier im Forum als wirklichen code anzeigen lassen, mit ([)vbnet(]) ([)/vbnet(]).

    Dann wäre es interessant zu wissen, ob beide Programme in der gleichen Solution sind.

    Ich bin mit der von dir verwendeten Methode nicht so vertraut, jedoch glaube ich, dass du wahrscheinlich in eine Datei schreibst, auf die beide Programme zugreifen? Dann kann ich dir das hier empfehlen:

    Programm1:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.IO.StreamReader
    3. Public class Program1
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. Dim fs As New FileStream("DEINE DATEI", FileMode.Append, FileAccess.Write)
    6. Dim sr as New StreamReader(fs)
    7. 'Mach was du hier machen willst, also schreib die Daten in die File.
    8. End Sub
    9. End Class



    Und Programm2:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.IO.StreamReader
    3. Public class Program2
    4. Private Sub Tmrlistener_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tmrlistener.Tick
    5. Dim fs As New FileStream("DEINE DATEI", FileMode.Open, FileAccess.Read)
    6. Dim sr as New StreamReader(fs)
    7. 'Ruf alle Daten ab und verarbeite sie.
    8. End Sub
    9. End Class


    Hoffe ich konnte helfen,
    Kodos
    Der code sendet auch keine Datei, sondern nur den Text in der Datei. P1 packt text in deineDatei.txt (Sollte sich im debug Ordner befinden) und P2 öffnet die Datei und liest den Text und kann diesen verarbeiten.

    ​Oder aber, wenn beide Programme in der gleichen Solution sind kannst du mit

    Visual Basic-Quellcode

    1. ​Public Class Programm1
    2. Public Dim text as String
    3. End Class


    ​Eine geteilte Variable erstellen, auf die P2 dann normal zugreift.

    @TGORde Fang an mit den TCP-Beispielen der MSDN, die funktionieren. Erweitere sie entsprechend.
    TcpClient
    TcpListener
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    kodos schrieb:

    Programm1:
    VB.NET-Quellcode
    Imports System.IO
    Imports System.IO.StreamReader
    Public class Program1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim fs As New FileStream("DEINE DATEI", FileMode.Append, FileAccess.Write)
    Dim sr as New StreamReader(fs)
    'Mach was du hier machen willst, also schreib die Daten in die File.
    End Sub
    End Class



    Und Programm2:
    VB.NET-Quellcode
    Imports System.IO
    Imports System.IO.StreamReader
    Public class Program2
    Private Sub Tmrlistener_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tmrlistener.Tick
    Dim fs As New FileStream("DEINE DATEI", FileMode.Open, FileAccess.Read)
    Dim sr as New StreamReader(fs)
    'Ruf alle Daten ab und verarbeite sie.
    End Sub
    End Class


    Hoffe ich konnte helfen,
    Kodos

    Ihh, was ist das denn?
    in Programm zwei schaust du einfach immer mal wieder rein ob was drin steht? Was ist, wenn die Datei schon geöffnet/benutzt wird? Dann fliegt dir alles um die Ohren. Und wenn das alles auf dem selben PC laufen sollte, dann wäre wahrscheinlich sowas hier besser: Named Pipes

    Und zur Übertragung per TCP/IP gab es doch dieses legendäre Tutorial von Kevin hier irgendwo im Forum, oder ist das nicht mehr da? Anscheinend nich mehr, egal. Nehm das hier: ErfinderDesRades oder Malischh

    Warum das Rad immer wieder neu erfinden?

    Snickbrack schrieb:


    Ihh, was ist das denn?
    in Programm zwei schaust du einfach immer mal wieder rein ob was drin steht? Was ist, wenn die Datei schon geöffnet/benutzt wird? Dann fliegt dir alles um die Ohren.


    Mit einer Try-Catch expression sollte das zu regeln sein.

    Versuchen zu öffnen -> Wenns klappt is gut, wenns muckt einfach drauf zugreifen.