import ServerSocket

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
zakspeed
User
Beiträge: 6
Registriert: Donnerstag 3. April 2014, 13:44

Hallo Forum,
ich beginne neu mit python und habe eine (wahrscheinlich) peinliche Frage :oops:
In welchem Paket für den Raspberry Pi liegt denn dieser Server?
Ich möchte eine TCP Verbindung mit json realisieren.
Welches json Modul könnt Ihr empfehlen.

Danke im voraus
Tatjana
BlackJack

@zakspeed: Das Modul heisst `SocketServer` und ist in der Python-Standardbibliothek. Dort gibt es ausserdem ein Modul für JSON mit dem Namen `json`.

Edit: Bevor Du das Rad neu erfindest: Für JSON-RPC gibt es schon etwas fertiges: https://pypi.python.org/pypi/jsonrpc/1.2
zakspeed
User
Beiträge: 6
Registriert: Donnerstag 3. April 2014, 13:44

Danke für die schnelle Antwort.

Dann dürfte doch bei der Eingabe von

$ python
Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import SocketServer
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/SocketServer.py", line 132, in <module>
import socket
File "socket.py", line 3, in <module>
class MyTCPHandler(SocketServer.BaseRequestHandler):
AttributeError: 'module' object has no attribute 'BaseRequestHandler'

eigentlich kein Fehler kommen.
Es sieht doch so aus, dass das Modul nicht in der Standard Bibliothek vorhanden ist.
Irgendwie fehlt mir der Durchblick.
Danke für den Tip mit json-rpc

Gruss Tatjana
BlackJack

@zakspeed: Du darfst *Dein* Modul nicht `socket` nennen, denn dann wird das vor dem `socket`-Modul in der Standardbibliothek gefunden und Deins enthält natürlich nicht die Objekte die man aus dem `socket`-Modul in der Standardbibliothek erwartet. ;-)
zakspeed
User
Beiträge: 6
Registriert: Donnerstag 3. April 2014, 13:44

Leider stehe ich auf dem Schlauch :oops:

Mit der Eingabe

$ python

antwortet der Interpreter mit

Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.

Meine Eingabe (so steht es auch in der Source)
>>> import SocketServer

hier kommt die Fehlermeldung

bei der Eingabe von
>>>import time

kommt
>>>

da ist doch alles OK, oder

Gruss Tatjana
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

SocketServer verwendet offensichtlich das Modul socket aus der Standardbibliothek. Jetzt hast du aber ein eigenes Modul namens socket erstellt, das im Suchpfad vorher gefunden und daher statt des gleichnamigen Moduls in der Standardbibliothek verwendet wird. Nenne dein Modul anders.

BTW, gerade hab' ich noch in Wikipedia nach Zakspeed geschaut und jetzt taucht es hier noch mal auf. :D
zakspeed
User
Beiträge: 6
Registriert: Donnerstag 3. April 2014, 13:44

@ /me

Meinen Nickname habe ich von meinem Opa übernommen, der in den 70er Jahren als Unix Programmierer gearbeitet hat.
Er ist entfernt Verwandt mit dem Rennstall, der damals in der Formel 1 fuhr, deshalb der Nickname.

Zurück zum Thema:
Wie werde ich denn meine "eigene Socket" wieder los?
Die muss ich doch irgendwie erstellt haben.

Gruss
Tatjana

Sorry, ich habe den Text geändert, weil ich etwas falsch verstanden habe.
Zuletzt geändert von zakspeed am Donnerstag 3. April 2014, 15:21, insgesamt 1-mal geändert.
BlackJack

@zakspeed: Die Dateien `socket.py` und falls vorhanden `socket.pyc` löschen (oder umbenennen).
zakspeed
User
Beiträge: 6
Registriert: Donnerstag 3. April 2014, 13:44

... geht nicht;-(((

Ich setzte den Raspi noch einmal in der Grundkonfi auf.
Geht wahrscheinlich schneller.

Habe ich jetzt gelernt, dass eigene Dateinamen keinen Modulnamen tragen sollten?

Bis später, und Danke für die schnelle Hilfe

Tatjana
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

zakspeed hat geschrieben:... geht nicht;-(((
Das muss eigentlich gehen.
zakspeed hat geschrieben:Habe ich jetzt gelernt, dass eigene Dateinamen keinen Modulnamen tragen sollten?
Dein eigener Programmpfad kommt in der Suchreihenfolge vor dem Suchpfad der Standardbibliothek. Wenn du also dort eine Datei liegen hast, deren Name identisch zu einem Modul der Standardbibliothek ist, dann wird diese auch als erstes herangezogen.
zakspeed
User
Beiträge: 6
Registriert: Donnerstag 3. April 2014, 13:44

Hurra, jetzt gehts;-)))

Ich habe aus Unkenntnis wahrscheinlich ziemlich rumgemurkst.
Nach der Neuinstallation keine Experimente, siehe da

geht;-)))

Danke für Eure Hilfe, vor allem mit dem Tip von JSON-RPC

Gruss Tatjana
Antworten