InSim examples
From LFS Manual
Jump to navigationJump to searchPython
Example 1
How to connect, send a packet and receive the response.
# Import Python's socket module.
import socket
# Import Python's struct module, which allows us to pack and unpack strings.
import struct
# Initialise the socket in TCP mode. 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connect to LFS.
sock.connect(('localhost', 29999))
# Pack the IS_ISI packet data into a string.
isi = struct.pack('BBBBHHBcH16s16s', 
                  44,           # Size
                  1,            # Type
                  0,            # ReqI
                  0,            # Zero
                  0,            # UDPPort
                  0,            # Flags
                  0,            # Sp0
                  ' ',          # Prefix
                  0,            # Interval
                  'password',   # Admin
                  'MyProgram',) # IName
# Send the string to InSim
sock.send(isi)
# We use a string as the buffer.
buffer = ''
while True:
    # We receive up to 1024 bytes in each receive call.
    data = sock.recv(1024)
    # If no data is received the connection has closed.
    if data:
        # Append received data onto our buffer.
        buffer += data
        # Loop through each completed packet in the buffer. The first byte of
        # each packet is the packet size, so we check that the length of the
        # buffer is at least the size of the first packet. 
        while len(buffer) > 0 and len(buffer) >= ord(buffer[0]):
            # Copy the packet from the buffer.
            packet = buffer[:ord(buffer[0])]
            # Remove the packet from the buffer.
            buffer = buffer[ord(buffer[0]):]
            # Our packet is now complete! :)
            # doSomethingWithPacket(packet)
    else: 
        break
sock.close()