TcpListener Problem

hofchr

Mitglied
Hi,

hier mal wieder eine Frage, die bestimmt mit 2 Zeilen zu lösen ist.
Die Frage ist nur, welche...

Ich möchte zwischen einem TcpClient und TpcListener Daten austauschen.
Hier das, was ich schonmal habe :

TcpClient:
-------------------

Module Main
Dim timeStream As Stream
Dim c As New TcpClient("s054m010",13)

Sub Main()
timeStream = c.GetStream

End Sub
End Module


TcpListener
-------------------

Module Module1
Dim listener As New TcpListener(13)
Dim dataSocket As Socket
Dim timeClient As TcpClient
Dim strdata As String
Dim byteData As Byte()


Sub Main()
listener.Start()
Do While True

dataSocket = listener.AcceptSocket
strdata = "Irgendwas zum Verschicken"
byteData = Encoding.ASCII.GetBytes(strdata.ToCharArray())
dataSocket.Send(byteData, byteData.Length, SocketFlags.None)


Loop

End Sub


Die Frage ist jetzt, wie kann ich auf strData vom Client aus wieder zugreifen ?
z.B. über Console.WriteLine ()

Danke für Eure Hilfe

Christian
 
Ich weiß nicht ob ich es richtig verstanden habe, aber :

für eine Client/Server-Anwendung musst Du prinzipiell das "DataArrival"-Ereignis einstellen. Damit teilst Du Deiner Anwendung mit, daß es Daten empfangen und was mit ihnen geschehen soll.
 
mmm nicht ganz.

Es würde mir ja schon reichen, wenn ich zumidest sehe, dass er ÜBERHAUPT was empfängt.
Das Programm connected sich schon ordentlich zum Server, nur kann ich den Stream nicht sinnvoll auswerten.
Ansich müsste doch durch die Do Loop Schleife einfach andauernd "Irgendwas" gesendet werden,
oder ? Und das könnte ich dann doch irgendwie aus dem Stream auf die Console ziehen...

Hoffentlich kannst du damit was anfangen :)

Gruss
Chris
 
Naja, andauernd "irgendwas" zu senden macht doch schonmal gar keinen Sinn.

Aaaalso :

1. Du musst Dir das Programm so einstellen, daß Du auf Befehl einen Text versenden kannst. Bspw. indem Du Dir eine Textbox zeichnest und einen CommandButton einfügst.

2. Das "DataArrival"-Ereignis des Winsocks musst Du programmieren, und zwar so daß es mit dem erhaltenen String etwas durchführt. Ich habe eine Function "InterPretieren (strReceived as String)" angelegt. In dieser Funktion wird der String gesplittet, weil ich sowohl Kommando wie auch Parameter sende.

In der Function habe ich eine Select Case die denb strCommand überprüft. Bei Wert 1 macht sie das, bei Wert 2 das und so weiter.

3. Auch im Server, dem Du ja einen Befehl sendest, musst Du dann die Möglichkeit bieten einen anderen Befehl zurückzusenden. Darauf reagiert der Client dann.

Vielleicht ist es sinnvoll, Du schaust Dir mal ein paar Programmierbeispiele für Server/Client-Anwendungen an.
 
:) das klingt schon nach dem, was ich möchte....Du weisst nicht zufällig ein oder zwei EINFACHE Server/Client Anwendungen bzw. Beispiele ? (auch wenn das Thema recht komplex ist...)
Wie gesagt, die muss nicht viel können ! Die von dir beschriebene Funktionalität reicht vollkommen aus.

Gruss
Chris
 
hofchr, wenn ich kann helfe ich gerne bei Problemen weiter. Das ist überhaupt keine Frage, aber Eigeninitiative gehört auch dazu.

Schonmal Herrn G. gefragt ?

Der erste Eintrag ist genau das, was Du suchst. Das hättest Du auch selber finden können.

//edit:

das fällt mir ja jetzt erst auf. Du willst eine Client/Server-Anwendung machen, die Strings empfängt um Befehle auszuführen ?

Soso ! ;)
 
Zuletzt bearbeitet:
hallo Filone

Danke für deine Hilfe,
aber ich habe mich vermutlich ein bisschen falsch ausgedrückt.

Mein Code funktioniert schon richtig ( Stichwort Eigeninitiative ),
da brauch man mein Wissens nach keine Winsock Programmierung mehr -
ansich reichen TcpClient und TcpListener vollkommen.

Ich habe mich da an eine Tutorial von Microsoft gehalten,
das eigentlich ganz simpel aussieht.

http://www.microsoft.com/germany/ms/msdnbiblio/show_all.asp?siteid=553238

Das Problem liegt lediglich in der Auswertung,
da er irgendwie aus dem Stream nix rausziehen mag.
 
Ach so, dann nehme ich alles zurück und behaupte das Gegenteil.

Daß er mit Deinem String nichts anfangen kann, liegt m.E. daran daß er nie aufhört. Du hast ja ein permanentes DataArrival.

Sende es einmal und lass den Empfänger (egal ob Server oder Client) mit einer MsgBox oder einem Eintrag in einem Label oder einem Textfeld den aktuellen Status anzeigen oder evtl. sogar noch den empfangenen String.

Wichtig übrigens auch noch : Socketstatus.

sckState-Übersicht ist in der Hilfe zum Socket enthalten, weitere wichtige Infos gibt es noch hier.

So, jetzt ist aber gut. Mach mal was, wenn was ist helfe ich Dir gerne nochmal weiter.

Hau rein. ;)
 
Hallo.

Fileone, für mich sieht das alles nach VB6 aus was du da so sagt. WinSock Control etc.

hofchr, schau dir mal folgende Links von mir an. Ist auch C# Code dabei, aber da die Klassen- und Methodennamen ident sind, sollte es dir dennoch weiterhelfen. Wenn du mehr über die verwendeten Methoden wissen willst, schau dir die Beschreibund in der MSDN, bzw. im DokumentationsBrowser an.

Simple TCP/IP Console Client (TcpClient, MultiThreading)
VB.NET TCP Client - Server Socket Communications

MfG,
Alex
 

Neue Beiträge

Zurück