Binary data exchange

Discussion in 'Python' started by RasikaSrinivasan, May 29, 2014.

  1. friends

    I have a pair of simple python programs as follows:

    #!/usr/bin/python
    # broadcast.py
    import socket
    from ctypes import *
    import random

    class PurgeData(Structure):
    _fields_ = [("press",c_int), ("ticks",c_int), ("volume",c_float)]

    myPort = 10756

    sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    addr = ('localhost',myPort)
    #sock.sendto(data,addr)

    presdata = PurgeData()
    presdata.press = 0
    presdata.ticks = 100

    for msg in range(1,20):
    presdata.press = presdata.press+1
    presdata.ticks = presdata.ticks+1
    presdata.volume = random.random()
    sock.sendto(presdata,addr)

    #--------------------

    #!/usr/bin/python
    # Receiver
    import socket

    from ctypes import *

    class PurgeData(Structure):
    _fields_ = [("press",c_int), ("ticks",c_int), ("volume",c_float)]

    myPort = 10756

    sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    addr = ('localhost',myPort)
    sock.bind(addr)
    presdata=PurgeData()

    while True:
    data,addr = sock.recvfrom(1024)
    memmove(addressof(presdata),data.strip(),len(data.strip()))
    print presdata.press, presdata.ticks, presdata.volume

    ---------------------

    When I tried to run this I get some bizarre results:


    1 101 0.343009024858
    2 102 0.36397305131
    3 103 0.495895296335
    4 104 0.372055351734
    5 105 0.933839201927
    6 106 0.931187808514
    7 107 0.876732826233
    8 108 0.298638045788
    1828716544 -754974720 0.183644190431
    1845493760 1660944384 0.186560109258
    1862270976 1056964608 0.18631502986
    1879048192 1728053248 0.186902835965
    1895825408 2097152000 0.18658298254
    14 114 0.407857120037
    15 115 0.833854913712
    16 116 0.00646247947589
    17 117 0.297783941031
    18 118 0.58082228899
    19 119 0.61717569828

    the received data for the messages 9 thru 13 are not as expected.

    I wonder if anyone can see what I am doing wrong?

    Appreciate any hints. thanks, srini
     
    RasikaSrinivasan, May 29, 2014
    #1
    1. Advertisements

  2. BTW - My environment is:

    H:\>python
    Enthought Canopy Python 2.7.6 | 64-bit | (default, Apr 11 2014, 20:31:44) [MSC v
    ..1500 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
     
    RasikaSrinivasan, May 29, 2014
    #2
    1. Advertisements

  3. RasikaSrinivasan

    MRAB Guest

    I don't understand why you're using the .strip method. That's for
    stripping whitespace from text, but you're not sending and receiving
    text, you're sending and receiving binary data.

    Personally, I'd use the struct module.
     
    MRAB, May 30, 2014
    #3
  4. Of course!!!! Cut and paste issue. Anyhow, i will look at the struct module. cheers, srini

     
    RasikaSrinivasan, May 30, 2014
    #4
  5. Mark Lawrence, May 30, 2014
    #5
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.