1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

[Python] An einem Windows Chat Client Pakets senden.

Dieses Thema im Forum "Support & Discussion" wurde erstellt von Cascraft, 16. Juli 2017.

  1. Cascraft

    Cascraft New Member

    Registriert seit:
    13. Juli 2017
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Hallo,

    ich versuche an einem Chat Client Pakets zu senden aber irgendwie klappt das nicht.

    hier der Code:

    Code (Text):
    import socket
    from time import sleep
    def client():



        HOST, PORT = 'xxx.xx.x.xxx', xxxx
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.settimeout(10)
        sock.connect((HOST, PORT))
        while True:
            try:
                sock.send(bytes.fromhex('06 CD F5 7E D6 03 7B 41'))
                sleep(1)
                reply = sock.recv(1)
                if not reply:
                    break
                print ("recvd: "), reply
            except KeyboardInterrupt:
                print ("bye")
                break
        sock.close()
        return
    jemand eine Idee? Es gibt keinen Error. (xxx.xx.x.xxx', xxxx mit absicht)
     
  2. Mastodon

    Mastodon New Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    16
    Zustimmungen:
    24
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Wenn das der ganze Code ist, hast du vergessen die Funktion "client" aufzurufen.

    Einfach "client()" am Ende deines Skriptes hinzufügen und du solltest eine Ausgabe haben.
     
    Cascraft gefällt das.
  3. Cascraft

    Cascraft New Member

    Registriert seit:
    13. Juli 2017
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Hey danke erstmal, aber ich bekomme jetzt immer diesen Fehler hier:

    [​IMG]

    PS: Ja das ist der ganze Code.
     
  4. Mastodon

    Mastodon New Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    16
    Zustimmungen:
    24
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    "timed out" heißt, dass der Server keine Antwort auf deine Anfrage schickt.
    Liegt meistens daran, dass die Anfrage fehlerhaft ist, bzw. die Daten die du sendest sind falsch und der Server versteht diese nicht.
     
  5. Cascraft

    Cascraft New Member

    Registriert seit:
    13. Juli 2017
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Sehr merkwürdig. . . Die Packets die ich mit Wireshark erhalten habe sind genauso. Was mache ich falsch :(
     
  6. SilverHazard

    SilverHazard Moderator Mitarbeiter Moderator

    Registriert seit:
    2. Juli 2017
    Beiträge:
    51
    Zustimmungen:
    39
    Punkte für Erfolge:
    18
    Geschlecht:
    männlich
    Hi Cascraft,

    Schickst du das Paket an deinen eigenen Server? Kannst du überprüfen, ob es auch tatsächlich dort ankommt?
     
  7. Sam

    Sam New Member

    Registriert seit:
    4. Juli 2017
    Beiträge:
    21
    Zustimmungen:
    13
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Du wartest nach dem Senden etwa eine Millisekunde, bevor du die Antwort liest.
    Das ist sehr kurz. Der Server muss deine Anfrage ja auch verarbeiten.

    Sonst bin ich mir nicht sicher, was genau in Python bei sock.send passiert. Es sieht für mich nur etwas seltsam aus. Wireshark Logs wären hilfreich
     
  8. Cascraft

    Cascraft New Member

    Registriert seit:
    13. Juli 2017
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Ich versende es an einem Chat Client. Ja, ich habe die sleep Funktion um Millisekunde/Minute etc erhöht und es funktioniert trotzdem nicht.

    PS: Muss ich erstmal die Login Daten senden, dann das eigentliche Packet oder kann ich die Pakets ohne "Login Daten" sofort an den Client versenden?
     
  9. 3HMonkey

    3HMonkey Administrator Mitarbeiter Administrator

    Registriert seit:
    28. Juni 2017
    Beiträge:
    77
    Zustimmungen:
    41
    Punkte für Erfolge:
    18
    Geschlecht:
    männlich
    Nochmal zum Verständnis, du hast einen Server und einen Client. Oben befindet sich der Code für den Client? Du willst dann etwas an einen Server schicken, von dem du dann eine Antwort erwartest. Diese Antwort soll dann ausgegeben werden?
    Ich würde hingehen und ein Paket senden, dann in eine Schleife gehen und so lange warten, bis du Daten empfängst, also so lange bis in der Socketverbindung Daten übertragen werden. Das heißt dass in die while noch eine while zum Empfangen muss. Weiterhin kenne ich mich leider nicht mit Python aus, aber ich vermute mal, dass in der Klmmer der Receive Methode nicht die Zeit von 1ner Millisekunde steht, sondern die zu empfangenen Bytes. Das Sleep ist quasi unnötig.
     
  10. Cascraft

    Cascraft New Member

    Registriert seit:
    13. Juli 2017
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Ja.
    Ich will ganz normal an einem Chat Client (Eine Windows Anwendung der nicht von mir ist wie zum beispiel Discord oder Gajim.) wo man mit mehreren Nutzern/User Chatten kann, meine eigenen Pakets senden. (Die Pakets habe ich mit Wireshark gesnifft und will es mit Python versenden.)
    Wenn ich nun meinen Paket mit Python gesendet habe soll die Nachricht "Hello World" im Chat zu lesen sein.
    Das Tutorial von ThunderByte ist genau das wonach ich suche.


    Ich hoffe ich habe es hier nochmal ausführlicher erklärt.
     
  11. gigagames

    gigagames New Member

    Registriert seit:
    2. Juli 2017
    Beiträge:
    9
    Zustimmungen:
    1
    Punkte für Erfolge:
    3
    Lad doch einfach mal die Pakete hoch, die du beim auslesen mittels Wireshark erhalten hast. (sind vorher noch andere Pakete versendet worden ? Dann mit denen anfangen)
     
  12. 3HMonkey

    3HMonkey Administrator Mitarbeiter Administrator

    Registriert seit:
    28. Juni 2017
    Beiträge:
    77
    Zustimmungen:
    41
    Punkte für Erfolge:
    18
    Geschlecht:
    männlich
    Nochmal, die sendest dann aber Nachrichten an deinen eigenen Client und nicht an den Server. Hinzukommt, dass du nicht einfach wahrlos Pakete an einen Server schicken kannst und dieser akzeptiert diese. Die Verbindungen sind oft verschlüsselt, mit einem Token gesichert, End to End zertifiziert uvm.
    Ich habe leider immernoch nicht ganz verstanden, was du machen willst.
    Für mein Verständnis sendest du Pakete an einen Server wie Discord. Das Pendant dazu wäre also der Discord-Client. Das Paket wird aber vom Server nicht angenommen, sonst würdest du "Hello World" in deinem Discord-Client lesen können. Das reine Paket reicht da nicht aus.
    Solltest du aber wirklich einfach nur ein Paket an deinen eigenen Discord-Client schicken wollen, ist das auch der falsche Weg. Der Client hört erstmal nur auf einen Endpoint, und das ist der Server.
     
    krusty gefällt das.

Diese Seite empfehlen

Die Seite wird geladen...