import socket
import sys

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Bind the socket to the port
server_address = ('0.0.0.0', 10000)
print('starting up on {} port {}'.format(*server_address))
sock.bind(server_address)

# Listen for incoming connections
sock.listen(1)
j = 0                                # contatore dei file salvati    
while True:
    # Wait for a connection
    print('waiting for a connection')
    connection, client_address = sock.accept()
    try:
        print('connection from', client_address)        # segnalo a video una ricezione di una lettura
        while True:
            data = connection.recv(20000)            # buffer dei dati in igresso
            print(data)                        # stampo a video i dati ricevuti
            if data:
                f = open('lettura_'+str(j)+'.csv', 'w',newline='', encoding='utf8')    #apro un file dove poi salvare i dati
                stri = format(data)                # metto il buffer in una variabile stringa
                lun = len(stri)                    # misuro la lunghezza della stringa
                lun = lun-1                    # predispongo 4 variabili ausiliarie
                pi = 2                        #
                pf = 1                        #
                flag = 0                    #
                for i in range (2,lun ,1):            # sostituisco i punti nella lettura con le virgole
                    if stri[i] == '.' :
                        stri[i] = ','
                    if stri[i] == ';' :
                        f.write(str(pf))            # scrivo la lettura nel file
                        if flag == 0:
                            flag = 1
                            f.write(';')            # scrivo il separatore nel file
                        pf = pf+1
                        f.write(stri[pi:i])            # scrivo il numero della lettura
                        f.write('\n')                # scrivo il fine riga e vado a capo nel file
                        pi = i
                f.close()
                j = j + 1
                print('scrivo il file')
            else:
                print('no data from', client_address)
                break

    finally:
        # Clean up the connection
        connection.close()