mit Winsock auf Telnet Verbinden

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von beate.

    mit Winsock auf Telnet Verbinden

    Hallo ich möchte mit Winsock auf Telnet Verbinden dann soll die anwendung sich auch ein Teamspeak Verbinden denn ich mit IP & Port angebe

    dann soll sich um hintergrund des Progammes (Unsichbar) die befehle

    VB.NET-Quellcode

    1. sel 112, slogin Name PW, msg Text


    im Telnet eingeben...kann mir vllt einer Helfen ??
    hi,ich muss auch daten per telnet an einen server schiken...hab irgentwo diesen soucre her blos leider weis ich ncihtmehr wo :( er functioniert auch soweit er hat nur das kleine problem das er sich ab und an aufhängt was man sicher auch in den griff bekommen kann leider weis ich blos nicht wo :(

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.Net
    3. Imports System.Net.Sockets
    4. Imports System.Text
    5. Imports System.io
    6. Imports System.Threading
    7. 'Die Imports
    8. Public stream As NetworkStream
    9. Public sr As StreamReader
    10. Private Sub cmdSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSend.Click
    11. Dim server As String = "DIE SERVER IP"
    12. Dim client As New TcpClient(server, DER SERVER PORT)
    13. stream = client.GetStream()
    14. sr = New StreamReader(stream)
    15. sendCommand("DAS COMMANDO WAS ES ZU SENDEN GIBT")
    16. Exit Sub
    17. End Sub
    18. Private Function sendCommand(ByVal send As String) As String
    19. send += vbCrLf
    20. Dim data As [Byte]() = Encoding.ASCII.GetBytes(send)
    21. stream.Write(data, 0, data.Length)
    22. sr = New StreamReader(stream)
    23. Dim buffer As New StringBuilder
    24. Do While sr.Peek() > 0
    25. Thread.Sleep(100)
    26. buffer.Append(sr.ReadLine + vbCrLf)
    27. Loop
    28. Return buffer.ToString
    29. End Function
    und weiter?es geht darum das es functionier...und diese tut es...zudem mal dein comment nicht produktiv ist !machnvorschlag wie es geht/gehen könnte oder behalt dein senfglass im kühlschrank :)schau liebe rnach wieso sich der source aufhängt
    LG
    Bei mir funktioniert er, diesen Code habe ich für Pop3 auf genommen und da hängt nichts. Ich könnte mir denken das es Streamingfehler sind und die While-Schleife nicht ausgeführt wird.
    Wenn man den Response nicht gleich bekommt aber die while nach neuem Streaming Inhalt sucht wird sich scheinbar der Stream aufhängen. Machst du aber einen nächsten Request wirst du den Response vom vorigen erhalten.
    Natürlich werden in VB08 Winsocks benutzt... sonst würde gar nichts funktionieren.
    Das ist jetzt wirklich nicht mehr so schwer...
    1. Erstell ein TcpSocket
    2. Verbinde es mit dem gewünschten Server
    3. Sende Daten bis du keine Lust mehr hast
    4. Schließe das Socket
    Ich hatte das mal versucht, fand die Version mit dem Senden von einzelnen Zeichen bzw. Zeichenketten mittels Sendkey eher suboptimal da ja das Telnet Fenster immer im Vordergrund stand.

    Hatte aber bei der Winsock Version immer das Problem das ich beim Verwenden von Steamreader immer Hyroglyphen zurückbekam..... Da bin ich noch dran! Hatte das Projekt zum damaligen Zeitpunkt auf Eis gelegt , gab damals wichtigere Projekte!

    Hat denn einer von Euch eine Idee bzgl. der Hyroglyphen [ASCII Encoding??]? Werd mich die nächsten Tage mit der Thematik wieder beschäftigen müssen! Vllt find ich dann mal den richtigen Syntax :)

    Aber das öffnen des Clients und das senden von Kommandos ist sehr einfach!
    Ist das ein Tcp Socket Verbindung? wenn ja wie schick ich jetzt die Daten mit welchem Befehl auch noch mal für dumme xD ?(


    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Text
    3. Class TCPCli
    4. Shared Sub Main()
    5. Dim tcpClient As New System.Net.Sockets.TcpClient()
    6. tcpClient.Connect("127.0.0.1", 8000)
    7. Dim networkStream As NetworkStream = tcpClient.GetStream()
    8. If networkStream.CanWrite And networkStream.CanRead Then
    9. ' Do a simple write.
    10. Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Is anybody there")
    11. networkStream.Write(sendBytes, 0, sendBytes.Length)
    12. ' Read the NetworkStream into a byte buffer.
    13. Dim bytes(tcpClient.ReceiveBufferSize) As Byte
    14. networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
    15. ' Output the data received from the host to the console.
    16. Dim returndata As String = Encoding.ASCII.GetString(bytes)
    17. Console.WriteLine(("Host returned: " + returndata))
    18. Else
    19. If Not networkStream.CanRead Then
    20. Console.WriteLine("cannot not write data to this stream")
    21. tcpClient.Close()
    22. Else
    23. If Not networkStream.CanWrite Then
    24. Console.WriteLine("cannot read data from this stream")
    25. tcpClient.Close()
    26. End If
    27. End If
    28. End If
    29. ' pause so user can view the console output
    30. Console.ReadLine()
    31. End Sub
    32. End Class
    Was hat den bitte eine Telnet Verbindung mit dem Microsoft Programm cmd.exe zu tun?
    Erstelle einfach ein TCP Socket und schreib drauf los. Nur Telnet hat halt keine Verschlüsselung.
    Er will nur auf Telnet zugreifen. So wie ich das verstanden habe.
    eigendlich ist das sehr einfach lach !

    kannst das zum test so machen !
    4 Textboxen erstellen
    1 für die IP
    2 für denn TCP port
    3 text box machst als multiline box für die ausgabe
    4 als befehlseingabe box

    asoo dann noch 2 Buttons auf die bühne bringen
    1 zum einlogen auf den server
    2 führ die befehle zu senden

    dann noch denn winsock auf den form ziehen

    und dann geht es mit den coden loss ^^

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. AxWinsock1.Connect(TextBox1.Text, TextBox2.Text)
    4. End Sub
    5. Private Sub AxWinsock1_DataArrival(ByVal sender As System.Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles AxWinsock1.DataArrival
    6. Dim Datats As String = ""
    7. AxWinsock1.GetData(Datats)
    8. TextBox3.Text = TextBox3.Text & Datats & vbCrLf
    9. End Sub
    10. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    11. AxWinsock1.SendData(TextBox4.Text & vbCrLf)
    12. End Sub
    13. End Class

    und wenn alles geht, kann man gut sich im TeamSpeck einlogen und leute ärgern XD

    So und den rest kannst selber machen was du noch machn wilst
    hab nun auch mal einen anderen source getestet... der hängt sich nun zwar nicht auf aber dafür sendet er nur benutzername + passwort aber den command an die consolenanwendung nichtmehr ... woran liegts???

    VB.NET-Quellcode

    1. Dim tcpClient As New System.Net.Sockets.TcpClient()
    2.   tcpClient.Connect("SERVER IP", PORT)
    3.   Dim networkStream As NetworkStream = tcpClient.GetStream()
    4.   ' Do a simple write.
    5.   Dim sendBytes As [Byte]()
    6.   sendBytes = Encoding.ASCII.GetBytes("USER xxxxxxx" + vbCrLf)
    7.   networkStream.Write(sendBytes, 0, sendBytes.Length)
    8.   sendBytes = Encoding.ASCII.GetBytes("PASS xxxxxxxx" + vbCrLf)
    9.   networkStream.Write(sendBytes, 0, sendBytes.Length)
    10.   sendBytes = Encoding.ASCII.GetBytes("send mail Sayla ""Support"" ""Irgent ein Text wo in der mail steht""" + vbCrLf)
    11.   networkStream.Write(sendBytes, 0, sendBytes.Length)
    12.   Dim bytes(tcpClient.ReceiveBufferSize) As Byte
    13.   networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
    14.   ' Output the data received from the host to the console.
    15.   Dim returndata As String = Encoding.ASCII.GetString(bytes)
    16.   txtRecv.Text = "Host returned: " + returndata
    17.   tcpClient.Close()
    Die Klasse TcpClient wrapped die Winsocks schon für dich.
    Jetzt mal in ganz einfach:

    1.
    TcpClient client = new TcpClient("server",port);
    NetworkStream sream = tcpclnt.GetStream();
    StreamReader reader = new StreamReader(netStream);
    StreamWriter writer = new StreamWriter(netStream);

    //Mach was tolles damit

    read.Close();
    writer.Close();
    stream.Close();
    client.Close();