InSim examples
From LFS Manual
Python
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 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)
# Some constants.
ISP_TINY = 3
TINY_NONE = 0
# keep alive the connection (see below)
def keepAlive(packet):
    # Check the packet type.
    if ord(packet[1]) == ISP_TINY:
        # Unpack the packet data.
        tiny = struct.unpack('BBBB', packet)
        # Check the SubT.
        if tiny[3] == TINY_NONE:
            # Send the keep alive packet back to LFS.
            sock.send(packet)
# We use a string as the buffer.
buffer = ''
while True:
    # Receive up to 1024 bytes of data.
    data = sock.recv(1024)
    # If no data is received the connection has closed.
    if data:
        # Append received data onto the buffer.
        buffer += data
        # Loop through each completed packet in the buffer. The first byte of
        # each packet is the packet size, so 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]):]
            # check keep alive!
            keepAlive(packet)
            # The packet is now complete! :)
            # doSomethingWithPacket(packet)
    else: 
        break
# Release the socket.
sock.close()