TOP
SSV Software Systems Registrieren  Registrieren
Einloggen, um private Nachrichten zu lesen  Einloggen, um private Nachrichten zu lesen
Startseite FAQ Suchen Mitglieder Profil  Login 
SSV Support-Forum
Server in Python …

 
Neues Thema eröffnen   Neue Antwort erstellen    SSV-Forum Foren-Übersicht >>> IGW/925
<<< Vorheriges Thema - Nächstes Thema >>>  
Beiträge der letzten Zeit anzeigen:   
Autor Nachricht
kdw



Anmeldedatum: 05.05.2006
Beiträge: 1211

BeitragVerfasst am: 16.08.2013, 14:32    Titel: Server in Python … Antworten mit Zitat

Hallo Forum.

Durch den beachtlichen Funktionsvorrat einer Python-Installation lässt sich schon mit wenigen Codezeilen ein funktionsfähiger TCP-Server erstellen. Hier ein Beispiel:

Code:
import httplib
import socket
import sys
import time

import random

HOST = ''
PORT = 2003

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))
s.listen(1)

while 1:
    conn, addr = s.accept()
    print 'Connected by ', addr

    while 1:
       data = random.randrange(1000, 2000)
       try:
          conn.send(str(data))
          conn.send(' \r\n')
          time.sleep(1)
       except socket.error as msg:
          print 'Disconnect ...'
          break;


Dieser Server wartet unter dem TCP-Port 2003 auf den Verbindungsaufbau durch einen TCP-Client (zum Testen kann man beispielsweise TeraTerm als Client benutzen).

Solange eine Verbindung besteht, sendet der Server einmal pro Sekunde eine Zufallszahl zwischen 1000 und 2000 als Text an den Client (Tera Term zeigt die Zahl als String an).

Wird die Verbindung durch den Client beendet, wartet der Server für immer auf den nächsten Verbindungsaufbau.

Gruß KDW
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kdw



Anmeldedatum: 05.05.2006
Beiträge: 1211

BeitragVerfasst am: 16.08.2013, 14:52    Titel: Server per autostart.sh starten … Antworten mit Zitat

Hallo Forum.

Wenn Sie den zuvor beschrieben Server bei jedem Bootvorgang automatisch starten wollen, gehen Sie bitte wir folgt vor:

1. Schreiben Sie den oben abgebildeten Python-Servercode in eine Textdatei mit dem Namen tcp-push-svr.py und speichern Sie diese Datei im Verzeichnis /flash.

2. Schreiben Sie den hier folgenden Code in eine Textdatei mit dem Namen autostart.sh und speichern Sie diese Datei im Verzeichnis /flash.

Code:
#!/bin/sh

exec 2> /tmp/fehler.txt
exec > /tmp/stdout.txt
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
export PYTHONPATH=/mnt/lib:/mnt/lib/python27.zip
export PYTHONHOME=/mnt

mount /dev/mtdblock4 /mnt -t jffs2
cd /flash
python tcp-push-svr.py


3. Vergeben Sie mit chmod +x autostart.sh die entsprechenden Attribute.

4. Starten Sie das IGW/92x erneut.

Das ist alles. Ab sofort wird der weiter oben beschriebene TCP-Server bei jedem Systemstart geladen und wartet unter der Portnummer 2003 auf eingehende Verbindungen.

Gruß KDW
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kdw



Anmeldedatum: 05.05.2006
Beiträge: 1211

BeitragVerfasst am: 17.08.2013, 20:19    Titel: TCP-Client mit Processing … Antworten mit Zitat

Hallo Forum.

Mit Hilfe von Processing (http://processing.org/) kann ein TCP-Client für PCs entwickelt werden. Die jeweilige Zufallszahl des weiter oben beschriebenen Python-TCP-Servers wird dann in einem separaten Fenster angezeigt. Hier der Code für Processing:

Code:
import processing.net.*;

Client myClient;
int dataLen;
String data;
PFont myFont;

void setup() {
  size(300, 130);
  background(#2c223e);
  myFont = createFont("System", 48, true);
  frameRate(4);
  myClient = new Client(this, "192.168.2.146", 2003);
}

void draw() {
  data = myClient.readString();
  if (data != null) {
    dataLen = data.length();
    if (dataLen == 4) {
      println(data);
      background(#2c223e);
      fill(#ffffff);
      textFont(myFont);
      data = data.replace("\r\n", "");
      String ndata = "Count: " + data;
      text(ndata, 10, height/2+16);
    }
  }
  myClient.clear();
}


In die Zeile

Code:
myClient = new Client(this, "192.168.2.146", 2003);


muss die IP-Adresse eingetragen werden, unter der der Python-TCP-Server zu erreichen ist.

Gruß KDW
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kdw



Anmeldedatum: 05.05.2006
Beiträge: 1211

BeitragVerfasst am: 14.09.2014, 08:42    Titel: HTTP-Server-Template … Antworten mit Zitat

Hallo Forum.

Das folgende Beispiel zeigt einen kleinen HTTP-Server, der per GET /?Tengine=Wert angesprochen werden muss. Der Query-String wird extrahiert und ‚Wert‘ an eine externe Funktion übergeben:

Code:
import urlparse
from BaseHTTPServer import BaseHTTPRequestHandler

def TengineHandler(value):
    print 'Tengine is now ' + value

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(s):
        parsed_path = urlparse.urlparse(s.path)
        querystr = parsed_path.query.split('=')
        if querystr[0] == 'Tengine' and len(querystr) == 2:
            s.send_response(200)
            TengineHandler(querystr[1])
        else:
            s.send_response(400)
        s.end_headers()

if __name__ == '__main__':
    from BaseHTTPServer import HTTPServer
    server = HTTPServer(('', 8080), MyHandler)
    print 'Starting server, use <Ctrl-C> to stop'
    server.serve_forever()


Für den Test dieses Server sollte man cURL benutzen. Ein möglicher Aufruf wäre:

Code:
curl –v http://127.0.0.1:8080/?Tengine=1234


Gruß KDW
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    SSV-Forum Foren-Übersicht >>> IGW/925 Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht teilnehmen.

SSV Software Systems GmbH

Dünenweg 5
30419 Hannover

Fon: +49(0)511 / 40 000-0
Fax: +49(0)511 / 40 000-40

sales@ssv-embedded.de

 

Impressum    ·    Datenschutz    ·    AGB

© 2018 SSV Software Systems GmbH. Alle Rechte vorbehalten.

ISO 9001:2015