TCP Chat Problem

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von magerquark.

    TCP Chat Problem

    Hey leute, hab mal n bisschen im internet nach einem chat prog gesucht und hab auch was gefunden. mein problem ist aber, dass mein freund nicht auf den server connecten kann. habe firewall mal ausgeschaltet aber er kann trz nicht auf den server connecten.

    IP + PORT ist schon richtig eingetragen.

    Für mein locales netzwerk benutze ich 127.0.0.1:4000, funz ohne probleme, nur wen mein freund von seinem pc auf meinen server connecten will, findet er keine verbindung! (78.48.**.***:4000)...

    hoffe mir kann wer helfen...

    Server:

    VB.NET-Quellcode

    1. Imports System.Text
    2. Imports System.Net.Sockets
    3. Public Class Form2
    4. Dim Data As Integer
    5. Dim Message As String
    6. Dim TCPL As TcpListener
    7. Dim TCPC As New TcpClient
    8. Dim BufferSize(TCPC.ReceiveBufferSize - 1) As Byte
    9. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. Me.BackgroundWorker1.WorkerReportsProgress = True
    11. Try
    12. TCPL = New TcpListener(Net.IPAddress.Any, 4000)
    13. TCPL.Start()
    14. 'ListBox1.Items.Add("Waiting for connection...")
    15. TextBox1.Text &= "Waiting for connection" & vbCrLf
    16. TCPL.BeginAcceptTcpClient(AddressOf OnConnect, Nothing)
    17. Catch ex As Exception
    18. 'ListBox1.Items.Add("Error: " & ex.Message)
    19. TextBox1.Text &= "Errord: " & ex.Message & vbCrLf
    20. End Try
    21. End Sub
    22. Private Sub OnConnect(ByVal AR As IAsyncResult)
    23. TCPC = TCPL.EndAcceptTcpClient(AR)
    24. Me.BackgroundWorker1.RunWorkerAsync("Connection with client has " & _
    25. "been established!")
    26. TCPC.GetStream.BeginRead(BufferSize, 0, BufferSize.Length, AddressOf OnRead, _
    27. Nothing)
    28. End Sub
    29. Private Sub OnRead(ByVal AR As IAsyncResult)
    30. Data = TCPC.GetStream.EndRead(AR)
    31. Message = Encoding.ASCII.GetString(BufferSize, 0, Data)
    32. Me.BackgroundWorker1.RunWorkerAsync(Message)
    33. TCPC.GetStream.BeginRead(BufferSize, 0, BufferSize.Length, AddressOf OnRead, _
    34. Nothing)
    35. End Sub
    36. #Region " Background Worker "
    37. Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, _
    38. ByVal e As System.ComponentModel.DoWorkEventArgs) _
    39. Handles BackgroundWorker1.DoWork
    40. Me.BackgroundWorker1.ReportProgress(100, e.Argument)
    41. End Sub
    42. Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, _
    43. ByVal e As System.ComponentModel.ProgressChangedEventArgs) _
    44. Handles BackgroundWorker1.ProgressChanged
    45. 'ListBox1.Items.Add(e.UserState)
    46. TextBox1.Text &= e.UserState & vbCrLf
    47. End Sub
    48. #End Region
    49. End Class


    Client:

    VB.NET-Quellcode

    1. Dim TCPC As New TcpClient
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. End Sub
    4. Private Sub OnConnect(ByVal AR As IAsyncResult)
    5. Try
    6. TCPC.EndConnect(AR)
    7. Me.BackgroundWorker1.RunWorkerAsync("Connection with server has " & _
    8. "been established!")
    9. Catch ex As Exception
    10. Me.BackgroundWorker1.RunWorkerAsync("Connection failed: " & ex.Message)
    11. End Try
    12. End Sub
    13. #Region " Background Worker "
    14. Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, _
    15. ByVal e As System.ComponentModel.DoWorkEventArgs) _
    16. Handles BackgroundWorker1.DoWork
    17. Me.BackgroundWorker1.ReportProgress(100, e.Argument)
    18. End Sub
    19. Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, _
    20. ByVal e As System.ComponentModel.ProgressChangedEventArgs) _
    21. Handles BackgroundWorker1.ProgressChanged
    22. 'ListBox1.Items.Add(e.UserState)
    23. TextBox3.Text &= e.UserState & vbCrLf
    24. End Sub
    25. #End Region
    26. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    27. Me.BackgroundWorker1.WorkerReportsProgress = True
    28. Try
    29. 'ListBox1.Items.Add("Connecting to sever...")
    30. TextBox3.Text &= "Conencting to server.." & vbCrLf
    31. TCPC.BeginConnect(TextBox1.Text, TextBox2.Text, AddressOf OnConnect, Nothing)
    32. Catch ex As Exception
    33. 'ListBox1.Items.Add("Server launch was unsuccessful!")
    34. TextBox3.Text &= "Server launch was unsuccessful!" & vbCrLf
    35. End Try
    36. End Sub
    37. Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click
    38. Form2.show()
    39. End Sub
    40. Private Sub TextBox4_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox4.KeyDown
    41. If e.KeyCode = Keys.Enter And TextBox4.Text <> "" Then
    42. Dim Writer As New IO.StreamWriter(TCPC.GetStream)
    43. Writer.Write(TextBox4.Text)
    44. Writer.Flush()
    45. Me.BackgroundWorker1.RunWorkerAsync(TextBox4.Text)
    46. Me.TextBox4.Text = ""
    47. End If
    48. End Sub
    49. End Class
    Unabhängig vom Code, den ich mir jetzt nicht genauer angeschaut habe musst du (oder halt derjenige der den Server am laufen hat) warscheinlich, wenn du einen Routerbesitzt den Port weiterleiten auf deinen PC. (Portforwarding)