Fehlgeschlagene If-Abfrage

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
montus_pythonia
User
Beiträge: 10
Registriert: Donnerstag 27. August 2015, 18:51

Ah Ok, wieder was gelernt ;)
Für meine Basteileien muss das überrings nicht super professionell umgesetzt sein, mit dem Ergebnis bin ich so zufrieden, auch wenn ich weiß das es sicher besser ginge :D
Dennoch natülich besten Dank an alle die sich mit mir rumschlagen hier ;)

Edit @BlackJack:
Ich verwende überrings nichtmehr recv() um die Daten zu verarbeiten sondern die Variable data, auch wenn es zwischendurch in einem meiner geposteten Codes hier stand, oder ist es nicht das was du meintest?
BlackJack

@montus_pythonia: Äh, und wo kommt der Inhalt von `data` her? Du verwendest `recv()` zumindest in den gezeigten Quelltexten falsch.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Da es sich ja offensichtlich um ein zeilenbasiertes Protokoll handelt, läßt sich das Problem einfach lösen:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
import socket
import sys

def process(connection, client_address):
    print >>sys.stderr, 'Neue Verbindung mit:', client_address

    # Daten empfangen und zurückschicken
    for line in connection.makefile('r'):
        print >>sys.stderr, 'Daten empfangen:', repr(line)
        print >>sys.stderr, 'Daten werden zurückgeschickt'
        connection.sendall(line)
        if line.strip() == "test":
            print >>sys.stderr, "Data ist test!"
        else:
            print >>sys.stderr, "Data ist nicht test!"
    print >>sys.stderr,'Verbindung mit', client_address, 'beendet'


def mainloop():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    server_address = ('192.168.178.41', 21345)
    print >>sys.stderr, 'Server startet auf %s port %s' % server_address
    sock.bind(server_address)
    sock.listen(1)

    while True:
        print >>sys.stderr, 'Auf Verbindung warten'
        process(*sock.accept())

if __name__ == '__main__':
    mainloop()
Antworten