Eine permante Verbindung halten

  • VB.NET
  • .NET (FX) 4.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Eine permante Verbindung halten

    Hallo liebe Community,

    Ich habe folgendes Problem. Ich suche gerade ein Tool oder ein Script, womit ich eine Client Anwendung(IP: 8.7.2.1) mit einem MasterServer(213.136.72.97) verbinden kann. Ohne das ich dann im Router des Clients die Port Weiterleitung aktivieren muss. Sodass dann der Master Server dem Client antworten kann ohne das die Portweiterleitung aktiviert ist..... Wie zum Beispiel Skype, Minecraft etc...



    Danke im Vorraus.

    Mit freundlichem Gruß
    Daniel Elskamp
    Ja aber so habe ich bis jetzt meine Clients ...

    VB.NET-Quellcode

    1. ​Imports System.Net.Sockets
    2. Imports System.Threading
    3. Imports System.IO
    4. Imports System.Text.RegularExpressions
    5. Public Class frm_main_direct
    6. Dim listener As New TcpListener(25476)
    7. Dim client As TcpClient
    8. Dim message As String = ""
    9. Const BufferSize = 1024
    10. Dim FileTransferFolder = "C:\"
    11. Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
    12. VoIP.ExitVoIP()
    13. listener.Stop()
    14. End Sub
    15. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    16. Me.Text = "Direkte Verbindung: " & VoIP.Status & " | VoIP | " & My.Settings.nickname
    17. End Sub
    18. Private Sub frm_main_direct_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    19. Dim listthread As New Thread(New ThreadStart(AddressOf listening))
    20. listthread.Start()
    21. End Sub
    22. Private Sub listening()
    23. listener.Start()
    24. End Sub
    25. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    26. If listener.Pending = True Then
    27. message = ""
    28. client = listener.AcceptTcpClient()
    29. Dim reader As New StreamReader(client.GetStream)
    30. While reader.Peek > -1
    31. message = message + Convert.ToChar(reader.Read()).ToString
    32. End While
    33. RichTextBox2.Text = RichTextBox2.Text & vbCrLf & My.Settings.nickname & " : " & message
    34. Else
    35. End If
    36. End Sub
    37. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    38. If RichTextBox1.Text = "" Then
    39. Else
    40. client = New TcpClient(frm_login.TextBox3.Text, 25476)
    41. Dim writer As New StreamWriter(client.GetStream())
    42. writer.Write(RichTextBox1.Text)
    43. RichTextBox2.Text = RichTextBox2.Text & vbCrLf & My.Settings.nickname & " : " & RichTextBox1.Text
    44. writer.Flush()
    45. End If
    46. End Sub
    47. Private Sub RichTextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles RichTextBox1.DragDrop
    48. Dim i As Int16
    49. Dim s As String
    50. ' Get start position to drop the text.
    51. i = RichTextBox1.SelectionStart
    52. s = RichTextBox1.Text.Substring(i)
    53. RichTextBox1.Text = RichTextBox1.Text.Substring(0, i)
    54. ' Drop the text on to the RichTextBox.
    55. RichTextBox1.Text = RichTextBox1.Text + _
    56. e.Data.GetData(DataFormats.Text).ToString()
    57. RichTextBox1.Text = RichTextBox1.Text + s
    58. End Sub
    59. Private Sub RichTextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles RichTextBox1.DragEnter
    60. If (e.Data.GetDataPresent(DataFormats.Text)) Then
    61. e.Effect = DragDropEffects.Copy
    62. Else
    63. e.Effect = DragDropEffects.None
    64. End If
    65. End Sub
    66. Private Sub RichTextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyDown
    67. If e.KeyCode = Keys.Enter Then
    68. Button1.PerformClick()
    69. RichTextBox1.Clear()
    70. e.Handled = True
    71. End If
    72. End Sub
    73. Private Sub ChatSpeichernToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChatSpeichernToolStripMenuItem.Click
    74. SaveFileDialog1.ShowDialog()
    75. System.IO.File.WriteAllText(SaveFileDialog1.FileName, RichTextBox2.Text)
    76. End Sub
    77. End Class


    Und jetzt möchte ich es aber gerne so haben das die Verbindung dauerhaft bleibt.
    Hi.

    Du brauchst keinen Timer für einen Chat. Du verwendest Events. Hier im Forum gibt es mehrere gute Chats im Sourcecodeaustausch:

    zB hier:
    VersuchsChat mit leistungsfähigem Server
    Das ist meine Signatur und sie wird wunderbar sein!