Welche IP Adresse braucht wer bei TCP Dateitransfer?

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von nikeee13.

    Welche IP Adresse braucht wer bei TCP Dateitransfer?

    Hallo,
    ich arbeite immo an einem Programm, das mit TCP Dateien überträgt. Ich dachte, es kommt zu Off Topic, da es nix mit dem Code selbst zu tun hat. Nun mein Problem: Ich finde nicht heraus, welche IP der Server braucht, und welche der Client. Der Server soll die Dateien empfangen. Brauche ich beim Server die Internet IP (z. B. 79.198.243.194) oder die (ich glaub die heißt) lokale IP (z. B. 192.168.1.3) oder reicht da auch die 127.0.0.1?
    Wenn der Server in deinem Netzwerk ist brauchst du die interne "lokale" IP. Ist der Server außerhalb brauchst du die "Internet IP". Localhost (127.0.0.1) geht nur wenn das Programm auf dem Server direkt liegen würde, also sinnlos.

    Der Client braucht die "Internet IP" des Servers. Der Server erhält bei der Anfrage ja automatisch die Clienten IP
    Server:

    VB.NET-Quellcode

    1. Imports System, System.Net, System.Net.Sockets, System.IO
    2. Public Class Form1
    3. Dim client As TcpClient
    4. Dim listener As TcpListener
    5. Dim tread As New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf listening))
    6. Dim stream As NetworkStream
    7. Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    8. Try
    9. listener.Stop()
    10. tread.Abort()
    11. Catch
    12. End Try
    13. Application.Exit()
    14. End Sub
    15. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    16. listener = New TcpListener(New IPAddress("192.168.1.200"), 6343)
    17. tread.Start()
    18. End Sub
    19. Sub listening()
    20. listener.Start()
    21. client = listener.AcceptTcpClient()
    22. stream = client.GetStream()
    23. Dim Buffer(1) As Byte
    24. Dim fs As New System.IO.FileStream("C:\Hans.exe", FileMode.Append, FileAccess.Write)
    25. While True
    26. Try
    27. stream.Read(Buffer, 0, 1)
    28. fs.Write(Buffer, 0, 1)
    29. fs.Flush()
    30. stream.Flush()
    31. Catch ex As Exception
    32. MsgBox(ex.Message)
    33. Exit While
    34. End Try
    35. End While
    36. fs.Close()
    37. tread.Abort()
    38. End Sub
    39. End Class


    Client:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    3. TextBox1.Text = Application.ExecutablePath
    4. End Sub
    5. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    6. Dim ip As String = InputBox("ServerIP:")
    7. Dim Port As String = InputBox("Port:")
    8. Dim client As New System.Net.Sockets.TcpClient()
    9. client.Connect(ip, Port)
    10. Dim Stream As System.Net.Sockets.NetworkStream = client.GetStream()
    11. Dim Buffer(1) As Byte
    12. Dim Stream2 As New System.IO.FileStream(TextBox1.Text, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Read)
    13. ProgressBar1.Maximum = Stream2.Length
    14. Dim TestString As String = String.Empty
    15. While True
    16. Try
    17. Stream2.Read(Buffer, 0, 1)
    18. Stream.Write(Buffer, 0, 1)
    19. Stream.Flush()
    20. ProgressBar1.Value += 1
    21. If Stream2.Position = Stream2.Length Then
    22. MsgBox("Fertig")
    23. Exit While
    24. End If
    25. Catch ex As Exception
    26. MsgBox(ex.Message)
    27. Exit While
    28. End Try
    29. End While
    30. End Sub
    31. End Class

    Wenn ichs mit 127.0.0.1 an mich selbst sende gehts. Hab die Output Datei einfach mal Hans.exe genannt. Ich nenn sie halt einfach Internet-IP :D