Domanda Problema python networking

Stato
Discussione chiusa ad ulteriori risposte.

examinedcastle

Utente Electrum
5 Luglio 2014
158
36
14
122
Mi stavo esercitando in python seguendo dei video su youtube così ho provaro a riscrivere tutto..praticamente l'obbiettivo è far comunicare un server con un client attraverso una connessione tcp così ho appunto creato due file (seguendo una guida) tcpServer.py e tcpClient.py però quando eseguo i due file ricevo sempre il seguente errore:
Codice:
Traceback (most recent call last):
  File "tcpClient.py", line 19, in <module>
    main()
  File "tcpClient.py", line 7, in main
    s.bind((host, port))
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
Da quello che ho capito è perchè nella porta è già presente un altro processo ma dopo svariati tentativi cambiando porta sono giunto alla conclusione che il processo che ostruisce la porta è appunto il processo del file tcpServer.py che è in attesa. Spero possiate aiutarmi.
Qui di seguito posto i due codici rispettivamente del server e del client.
Codice:
import socket

def main():
    host = '127.0.0.1'
    port = 6666
    s = socket.socket()
    s.bind((host,port))
    s.listen(1)
    c, addr = s.accept()
    print "[+]Connection from: " + str(addr)
    while True:
        data = c.recv(1024)
        if not data:
            break
        print "[!]Message from the connected user: " + str(data)
        data = raw_input("[?]Answer?" + "/t" + "Press q to quit")
        if data == q:
            s.close()
            print "[!]Connection finished"
        else:
            print "[..]Sending message "
            c.send(data)

if __name__ == '__main__':
    main()
Codice:
import socket

def main():
    host = '127.0.0.1'
    port = 6666
    s = socket.socket()
    s.bind((host, port))
    message = raw_input("-> ")
    while message != 'q':
        print "[..]Sending message "
        s.send(message)
        data = s.recv(1024)
        print '[+]Received message: ' + str(data)
        message = raw_input("-> ")
    print '[!]Connection finished'
    s.close()

if __name__ == "__main__":
    main()
P.S. ho capito tutte le istruzioni tranne una...a cosa serve questa assegnazione " c, addr = s.accept() " ? Ho poi notato che successivamente a data viene assegnato c.recv() ma non riesco a capire cosa significhi c.
 
Stato
Discussione chiusa ad ulteriori risposte.