Seite 1 von 1

c++ Server Kommunications Protokoll nach Python

Verfasst: Mittwoch 1. Juli 2015, 19:17
von kevv
Tach Jungs.
Kann jemand helfen folgenden c++ Code nach Python 2.7 zu Konvertieren !?
Die Funktion ist recht simpel,PAKET_INFO structure mit Daten füllen und versenden, danach Daten versenden.

Das Problem ist folgende Zeile.
#send( ConnectSocket, (char *)&pi, sizeof(pi), 0 ); #// c++

Wie setzt man das in Python um ??

Code: Alles auswählen

# *** c++ exampel ***

    typedef struct _PAKET_INFO {
        int Command;
        int Buffersize;
    } PAKET_INFO, *PPAKET_INFO;

    const int COMMAND_HANDSHAKE    = 0x646980;
    char *Paket = "test123";
    PAKET_INFO pi;
    pi.Command      = COMMAND_HANDSHAKE;
    pi.Buffersize   = strlen(Paket);

    send( ConnectSocket, (char *)&pi, sizeof(pi), 0 );
    send( ConnectSocket, Paket, pi.Buffersize, 0 );

Code: Alles auswählen


# Python 2.7
class PAKET_INFO(Structure):
    _fields_ = [
    ("Command",  DWORD),
    ("Buffersize",     DWORD)]

COMMAND_HANDSHAKE    = 0x646980;
Paket = "test123"
si = PAKET_INFO()
si.Command = COMMAND_HANDSHAKE    
si.Buffersize = len(Paket)


#send( ConnectSocket, (char *)&pi, sizeof(pi), 0 ); #//  c++
Socket.send(???) '# ???

#send( ConnectSocket, Paket, pi.Buffersize, 0 ); #//  c++
Socket.send(Paket)


Re: c++ Server Kommunications Protokoll nach Python

Verfasst: Mittwoch 1. Juli 2015, 19:30
von Sirius3
@kevv: mit struct gehts einfacher:

Code: Alles auswählen

import struct

COMMAND_HANDSHAKE    = 0x646980;
paket = "test123"
socket.sendall(struct.pack("<ii", COMMAND_HANDSHAKE, len(paket)) + paket)

Re: c++ Server Kommunications Protokoll nach Python

Verfasst: Mittwoch 1. Juli 2015, 20:09
von kevv
Super! Das Versenden klappt schon mall.

Die Server Antworten kommen auf dieselbe Weise zurück.
Kannst du mir noch ein kleines Beispiel geben wie Mann die am besten einlesen kann !?

Re: c++ Server Kommunications Protokoll nach Python

Verfasst: Mittwoch 1. Juli 2015, 20:47
von Sirius3
Lesen geht fast gleich:

Code: Alles auswählen

reader = socket.makefile('rb')
command, length = struct.unpack("<ii", reader.read(8))
paket = reader.read(length)

Re: c++ Server Kommunications Protokoll nach Python

Verfasst: Donnerstag 2. Juli 2015, 15:03
von Dav1d
Eventuell ist Construct etwas für dich.