Raspberry Pi

  • C++/CLI

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

    Da musst du schon genauer sein ^^

    Welche Sprache, welches Problem, welche Software verwendest du?

    mfg

    gfc
    OS: Raspbian
    Du kannst den Pi zum Beispiel in Python (meistens bereits installiert) oder C/C++ mit dem gcc programmieren.
    Als Progarmmiersoftware reichen dir ein Texteditor und die Interpreter/Compiler.
    Da ich ausschließlich auf der Konsole arbeite, programmiere in C/C++ mit nano, und kompiliere mit gcc/make, eventuell noch mit der wiringPi-lib falls ich Zugriff auf die GPIO Ports brauche. In Sachen GUI kenne ich mich leider nicht aus.
    SᴛᴀʀGᴀᴛᴇ01
    Also, erstes Projekt ist mit python, ich habe den Multiply-Server tcp-ip von hier auf einem Windows rechner verwendet (inkl. client)Nun möchte ich den Server auf den Pi schieben, ich habe da auch schon einen Programm code, jedoch kommt nach dem login einen Fehler und zwar:

    In System.ArgumentNullException ist eine Ausnahme vom Typ "System.Windows.Forms.dll" aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet.
    Zusätzliche Informationen: Der Wert darf nicht NULL sein.

    Der Server läuft jedoch weiter nur der client kackt

    Python code
    Spoiler anzeigen

    VB.NET-Quellcode

    1. import SocketServer
    2. class MyTCPHandler(SocketServer.BaseRequestHandler):
    3. """
    4. The RequestHandler class for our server.
    5. It is instantiated once per connection to the server, and must
    6. override the handle() method to implement communication to the
    7. client.
    8. """
    9. def handle(self):
    10. # self.request is the TCP socket connected to the client
    11. self.data = self.request.recv(1024).strip()
    12. print "{} wrote:".format(self.client_address[0])
    13. print self.data
    14. # just send back the same data, but upper-cased
    15. self.request.sendall(self.data.upper())
    16. if __name__ == "__main__":
    17. HOST, PORT = "192.168.1.88", 9999
    18. # Create the server, binding to localhost on port 9999
    19. server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
    20. # Activate the server; this will keep running until you
    21. # interrupt the program with Ctrl-C
    22. server.serve_forever()



    client:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.IO
    3. Public Class Form1
    4. Private stream As NetworkStream
    5. Private streamw As StreamWriter
    6. Private streamr As StreamReader
    7. Private client As New TcpClient
    8. Private t As New Threading.Thread(AddressOf Listen)
    9. Private Delegate Sub DAddItem(ByVal s As String)
    10. Private nick As String = "unknown"
    11. Private Sub AddItem(ByVal s As String)
    12. ListBox1.Items.Add(s)
    13. End Sub
    14. Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    15. Try
    16. client.Connect("192.168.1.88", 9999) ' hier die ip des servers eintragen.
    17. ' da dieser beim testen wohl lokal läuft, hier die loopback-ip 127.0.0.1.
    18. If client.Connected Then
    19. stream = client.GetStream
    20. streamw = New StreamWriter(stream)
    21. streamr = New StreamReader(stream)
    22. streamw.WriteLine(nick) ' das ist optional.
    23. streamw.Flush()
    24. t.Start()
    25. Else
    26. MessageBox.Show("Verbindung zum Server nicht möglich!")
    27. Application.Exit()
    28. End If
    29. Catch ex As Exception
    30. MessageBox.Show("Verbindung zum Server nicht möglich!")
    31. Application.Exit()
    32. End Try
    33. End Sub
    34. Private Sub Listen()
    35. While client.Connected
    36. Try
    37. Me.Invoke(New DAddItem(AddressOf AddItem), streamr.ReadLine)
    38. Catch
    39. MessageBox.Show("Verbindung zum Server nicht möglich!")
    40. Application.Exit()
    41. End Try
    42. End While
    43. End Sub
    44. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    45. streamw.WriteLine(TextBox1.Text)
    46. streamw.Flush()
    47. TextBox1.Clear()
    48. End Sub
    49. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    50. nick = InputBox("Nickname: ", "Namen festlegen", "unknown")
    51. End Sub
    52. End Class


    Das os ist Raspian, Raspberry Pi Typ B

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „schnibli“ ()

    Ich habe nun den client so angepasst:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.IO
    3. Public Class Form1
    4. Private stream As NetworkStream
    5. Private streamw As StreamWriter
    6. Private streamr As StreamReader
    7. Private client As New TcpClient
    8. Private t As New Threading.Thread(AddressOf Listen)
    9. Private Delegate Sub DAddItem(ByVal s As String)
    10. Private nick As String = "unknown"
    11. Private Sub AddItem(ByVal s As String)
    12. ListBox1.Items.Add(s)
    13. End Sub
    14. Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    15. Try
    16. client.Connect("192.168.1.90", 9999) ' hier die ip des servers eintragen.
    17. ' da dieser beim testen wohl lokal läuft, hier die loopback-ip 127.0.0.1.
    18. If client.Connected Then
    19. stream = client.GetStream
    20. streamw = New StreamWriter(stream)
    21. streamr = New StreamReader(stream)
    22. streamw.WriteLine(nick) ' das ist optional.
    23. streamw.Flush()
    24. t.Start()
    25. Else
    26. MessageBox.Show("Verbindung zum Server nicht möglich!")
    27. Application.Exit()
    28. End If
    29. Catch ex As Exception
    30. MessageBox.Show("Verbindung zum Server nicht möglich!")
    31. Application.Exit()
    32. End Try
    33. End Sub
    34. Private Sub Listen()
    35. While client.Connected
    36. Me.Invoke(New DAddItem(AddressOf AddItem), streamr.ReadLine)
    37. End While
    38. End Sub
    39. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    40. streamw.WriteLine(TextBox1.Text)
    41. streamw.Flush()
    42. TextBox1.Clear()
    43. End Sub
    44. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    45. nick = InputBox("Nickname: ", "Namen festlegen", "unknown")
    46. End Sub


    Server:
    Spoiler anzeigen
    import SocketServer

    class MyTCPHandler(SocketServer.BaseRequestHandler):
    """
    The RequestHandler class for our server.

    It is instantiated once per connection to the server, and must
    override the handle() method to implement communication to the
    client.
    """

    def handle(self):
    # self.request is the TCP socket connected to the client
    self.data = self.request.recv(1024).strip()
    print "{} wrote:".format(self.client_address[0])
    print self.data
    # just send back the same data, but upper-cased
    self.request.sendall(self.data.upper())

    if __name__ == "__main__":
    HOST, PORT = "192.168.1.90", 9999

    # Create the server, binding to localhost on port 9999
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)

    # Activate the server; this will keep running until you
    # interrupt the program with Ctrl-C
    server.serve_forever()

    Das heisst das eine Try Catch entfernt

    Fehler und Zeile im Anhang

    Was ich noch sagen muss:
    Nach der Bestätigung des Usernamens wird dieser an den server gesendet und dann kackt er beim listening ab
    Bilder
    • 1234.PNG

      43,42 kB, 1.083×393, 135 mal angesehen

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