client server connect Problem

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von enIking1998.

    client server connect Problem

    Hallo

    ich habe eine client/server Anwendung geschrieben, bei der der client automatisch zum server connected. Auf meinem eigenen Rechner klappt das prima. Sobald ich aber versuche mit dem client auf einem anderen Rechner auf den server, der auf meinem Rechner läuft zu connecten, funktioniert es nicht...

    Hat einer eine Idee woran das liegen könnte?
    Problem immer noch nicht gelöst. Hier mal mein code

    hier der server code:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.IO
    3. Imports System.Net
    4. Public Class Form1
    5. Dim stream As NetworkStream
    6. Dim streamw As StreamWriter
    7. Dim streamr As StreamReader
    8. Dim server As TcpListener
    9. Dim client As New TcpClient
    10. Dim ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 32103)
    11. Dim mainthread As Threading.Thread
    12. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    13. mainthread = New Threading.Thread(AddressOf mainserver)
    14. mainthread.Start()
    15. End Sub
    16. Sub mainserver()
    17. server = New TcpListener(ipendpoint)
    18. server.Start()
    19. client = server.AcceptTcpClient
    20. If client.Connected Then
    21. MsgBox("Connected")
    22. End If
    23. stream = client.GetStream
    24. streamr = New StreamReader(stream)
    25. streamw = New StreamWriter(stream)
    26. While True
    27. Dim Buffer() As Byte = Convert.FromBase64String(streamr.ReadLine) 'Wandelt den String wieder zu Byte-Array um
    28. File.WriteAllBytes("Pfad" + TextBox2.Text, Buffer) 'Schreibt die neue Datei
    29. End While
    30. End Sub
    31. Private Sub Form1__close(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.FormClosing
    32. server.Stop()
    33. Try
    34. mainthread.Abort()
    35. Catch
    36. End Try
    37. End Sub
    38. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    39. streamw.WriteLine(TextBox1.Text)
    40. streamw.Flush()
    41. End Sub
    42. End Class


    hier der client code:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.IO
    3. Public Class Form1
    4. Dim client As New System.Net.Sockets.TcpClient
    5. Dim stream As NetworkStream
    6. Dim streamW As StreamWriter
    7. Dim streamR As StreamReader
    8. Dim mainthread As Threading.Thread
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. mainthread = New Threading.Thread(AddressOf mainserver)
    11. mainthread.Start()
    12. End Sub
    13. Sub Deklare_Streams()
    14. stream = client.GetStream ' Stream wird auf Client verwiesen
    15. streamW = New StreamWriter(stream) ' Stream zum Senden wird deklariert
    16. streamR = New StreamReader(stream) ' Stream zum Empfangen wird deklariert
    17. End Sub
    18. Sub mainserver()
    19. While True
    20. If client.Connected = False Then
    21. Try
    22. client.Connect("Computername", 32103)
    23. If client.Connected Then
    24. Deklare_Streams()
    25. End If
    26. Catch ex As Exception
    27. End Try
    28. End If
    29. Try
    30. SendFile(streamR.ReadLine)
    31. Catch
    32. End Try
    33. End While
    34. End Sub
    35. Private Sub SendFile(ByVal pfad As String)
    36. Try
    37. Dim Buffer() As Byte = File.ReadAllBytes(pfad) 'List alle Byts das Datei aus
    38. Dim sbuffer As String = Convert.ToBase64String(Buffer) 'Wandelt das Byte-Array in einen String um
    39. streamW.WriteLine(sbuffer)
    40. streamW.Flush() 'Dürfte klar sein
    41. Catch
    42. End Try
    43. End Sub
    44. End Class
    Hab im Forum dies gefunden:

    Also Konsolenanwendung:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.IO
    3. Imports System.Net
    4. ' TCP-MultiServer
    5. ' C 2009 - Vincent Casser
    6. Module Module1
    7. Private server As TcpListener
    8. Private client As New TcpClient
    9. Private ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 32103)
    10. Private list As New List(Of Connection)
    11. Private Structure Connection
    12. Dim stream As NetworkStream
    13. Dim streamw As StreamWriter
    14. Dim streamr As StreamReader
    15. Dim nick As String ' natürlich optional, aber für die identifikation des clients empfehlenswert.
    16. End Structure
    17. Private Sub SendToAllClients(ByVal s As String)
    18. For Each c As Connection In list ' an alle clients weitersenden.
    19. Try
    20. c.streamw.WriteLine(s)
    21. c.streamw.Flush()
    22. Catch
    23. End Try
    24. Next
    25. End Sub
    26. Sub Main()
    27. Console.WriteLine("Der Server läuft!")
    28. server = New TcpListener(ipendpoint)
    29. server.Start()
    30. While True ' wir warten auf eine neue verbindung...
    31. client = server.AcceptTcpClient
    32. Dim c As New Connection ' und erstellen für die neue verbindung eine neue connection...
    33. c.stream = client.GetStream
    34. c.streamr = New StreamReader(c.stream)
    35. c.streamw = New StreamWriter(c.stream)
    36. c.nick = c.streamr.ReadLine ' falls das mit dem nick nicht gewünscht, auch diese zeile entfernen.
    37. list.Add(c) ' und fügen sie der liste der clients hinzu.
    38. Console.WriteLine(c.nick & " has joined.")
    39. ' falls alle anderen das auch lesen sollen können, an alle clients weiterleiten. siehe SendToAllClients
    40. Dim t As New Threading.Thread(AddressOf ListenToConnection)
    41. t.Start(c)
    42. End While
    43. End Sub
    44. Private Sub ListenToConnection(ByVal con As Connection)
    45. Do
    46. Try
    47. Dim tmp As String = con.streamr.ReadLine ' warten, bis etwas empfangen wird...
    48. Console.WriteLine(con.nick & ": " & tmp)
    49. SendToAllClients(con.nick & ": " & tmp) ' an alle clients weitersenden.
    50. Catch ' die aktuelle überwachte verbindung hat sich wohl verabschiedet.
    51. list.Remove(con)
    52. Console.WriteLine(con.nick & " has exit.")
    53. Exit Do
    54. End Try
    55. Loop
    56. End Sub
    57. End Module


    Das ist der Server der Client kann so bleiben.
    Ahja du musst in CMD folgendes eingeben:
    ipconfig
    dann wo IPv4 steht die IP kopiren und wo

    VB.NET-Quellcode

    1. client.Connect("Computername", 32103)


    steht musst du die IP reinschreiben die auch in IPv4 steht.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „enIking1998“ ()

    enIking1998 schrieb:

    Versuch mal den Server in Konsolenanwendung zu schreiben.


    Und das soll was bringen?

    Auf welche Ip versucht der Client sich zu verbinden?
    Du musst schon die externe IP der Fritzbox verwenden!

    Gruss
    Das ist meine Signatur und sie wird wunderbar sein!