Forum >> Programmazione Python >> Web e Reti >> Server-multiclient con socket non si collega

Pagina: 1 2 Avanti

Buona sera a tutti, normalmente cerco di leggere tutti i forum per evitare di fare domande nei forum, ma questa volta non riesco ad uscirne...
Ho scritto un programma che fa diverse cose ma che ogni qual volta serve, invia dei dati ad un server tramite socket. Tale programma è scritto in python, il programma sul server in VB6. Fin qui tutto funziona perfettamente. Siccome, però, vorrei passare il programma server in python perché VB6 mi da problemi su Windows 7, ho preso i vari programmini che ci sono in rete per poi lavorarci sopra. Ne ho provati almeno una decina, ma nessuno prende in carico la richiesta di connessione.
Sul client ho:
from socket import *
serverHost = '192.168.0.11'
serverPort = 2000
s = socket(AF_INET, SOCK_STREAM)
s.settimeout(10)
s.connect((serverHost, serverPort))
dato="MI SONO CONNESSO"
s.send(dato)
Qualcuno sa dirmi cosa devo scrivere nell'applicazione server per fare in modo che i due si parlino???
P.s.: il server dovrebbe accettare almeno 21 connessioni simultanee...
Grazie a tutti!
Ciao caro e benvenuto. :birrame:

Scusami tanto ma sono fuori e non ho modo di verificare il tuo script, ti posso però lasciare un video (anzi più di uno fanno al caso tuo), nel frattempo potrebbe aiutarti.

Cya
Ciao, grazie per la risposta e per il link. Purtroppo me li sono guardati già tutti (o quasi), ma il problema persiste.
Tanto per la cronaca, i client sono Raspbian su Raspberry mentre il server è un Windows 7.
Ciao, grazie per la risposta e per il link. Purtroppo me li sono guardati già tutti (o quasi), ma il problema persiste.
Tanto per la cronaca, i client sono Raspbian su Raspberry mentre il server è un Windows 7.
Che errore ricevi?
Buongiorno e buon inizio settimana.
Purtroppo non ricevo nessun errore... Non si collega e basta. Resta lì in ascolto per tutta la vita.
Questo e' un esempio che trovai su un libro tempo fa, spero possa esserti di aiuto....

----------- server.py--------------
import socket


def respond(client):
   response = input("Enter a value: ")
   client.send(bytes(response, 'utf8'))
   client.close()

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost',2401))
server.listen(1)
try:
   while True:
      client, addr = server.accept()
      respond(client)
finally:
   server.close()
---------------- client.py------------------------
import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 2401))
print("Received: {0}".format(client.recv(1024)))
client.close()
------------------------------------------------------

1. In un terminale fai partire il server.py.
2. In un altro terminale fai partire il client.py.
3. Nel terminale del server apparira' (Enter a value: ), digita un valore e premi Enter.
4. Nel terminale del client riceverai il valore che hai digitato ed esce.Fai ripartire il client di nuovo....
Buongiorno e buon inizio settimana.
Purtroppo non ricevo nessun errore... Non si collega e basta. Resta lì in ascolto per tutta la vita.
$ nc -lk 2000 &
[1] 11123

$ py
Python 3.6.3 (default, Oct  3 2017, 21:45:48) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
Using /usr/bin/python3; type "ipy" to enter IPython
>>> from socket import *
>>> s = socket(AF_INET, SOCK_STREAM) 
>>> s.settimeout(10) 
>>> s.connect(('127.0.0.1', 2000))
>>> s.send('MI SONO CONNESSO')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: a bytes-like object is required, not 'str'
>>> s.send(b'MI SONO CONNESSO')
16
>>> s.close()
>>> ^D
[1]+  Stopped                 nc -lk 2000

$ fg
nc -lk 2000

MI SONO CONNESSO
^C

$
THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Aprimus, grazie per il codice ma è quello che utilizzo già ed è quello che, di fatto, resta in attesa di una chiamata per mooooolto tempo....
Said, ti ringrazio per l'intervento ma temo che dovrai essere un po' più descrittivo perché programmo in python da troppo poco tempo per leggere tra le righe. In ogni caso, ho notato la differenza nella trasmissione del dato e ho visto che hai messo una "b" prima della stringa. Cosa significa?
Said, ti ringrazio per l'intervento ma temo che dovrai essere un po' più descrittivo perché programmo in python da troppo poco tempo per leggere tra le righe. In ogni caso, ho notato la differenza nella trasmissione del dato e ho visto che hai messo una "b" prima della stringa. Cosa significa?

Ma chi è Said? :)

Bytes literals are always prefixed with 'b' or 'B'; they produce an
instance of the bytes type instead of the str type. They may only
contain ASCII characters; bytes with a numeric value of 128 or greater
must be expressed with escapes.

Cya
Ma chi è Said? :)

Quello che ha risposto per ultimo prima di me. Siccome il suo nome aveva caratteri simil-arabo, l'ho chiamato Said.... :)
Grazie per la risposta. In ogni caso, al di là dell'errore in trasmissione di un dato, il problema sulla connessione rimane... Ho già fatto duemila prove ancora ma non c'è verso. In VB6 la connessione è istantanea.



Pagina: 1 2 Avanti



Esegui il login per scrivere una risposta.