2012-04-04 5 views
4

ServerServer Client Communication Python

import socket 
import sys 
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

host= 'VAC01.VACLab.com' 
port=int(2000) 
s.bind((host,port)) 
s.listen(1) 

conn,addr =s.accept() 

data=s.recv(100000) 

s.close 

CLIENT

import socket 
import sys 

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

host="VAC01.VACLab.com" 
port=int(2000) 
s.connect((host,port)) 
s.send(str.encode(sys.argv[1])) 

s.close() 

Ich möchte der Server die Daten empfangen, dass Client sendet.

bekomme ich folgende Fehlermeldung, wenn ich diese versuchen

Client-Seite

Traceback (jüngste Aufforderung zuletzt): File "Client.py", Zeile 21, in s.send (sys.argv [1]) Typeerror: 'str' unterstützt nicht die Puffer-Schnittstelle

Server Side

Datei "Listener.py", Zeile 23, in data = s.recv (100000) socket.error: [Errno 10057] Eine Anfrage zum Senden oder Empfangen von Daten wurde abgelehnt bec ause der Socket ist nicht verbunden und (Beim Senden an einen Datagramm-Socket mit einem sendto-Aufruf wurde keine Adresse angegeben.

+0

Ich denke, dass Sie die 'str' in 'bytes' konvertieren müssen. –

+0

Mache ich das str.encode (sys.argv [1]) ?? Ich habe das gemacht, die Fehler haben aufgehört, aber die Daten werden nicht übertragen. –

+0

Haben Sie immer noch Probleme? –

Antwort

8

Im Server verwenden Sie den horing Socket, um Daten zu empfangen. Es wird nur verwendet, um neue Verbindungen zu akzeptieren.

Änderung dieser:

conn,addr =s.accept() 

data=conn.recv(100000) # Read from newly accepted socket 

conn.close() 
s.close() 
+0

Immer noch den gleichen Fehler auf der Clientseite geben. Der Serverfehler wurde behoben. –

3

Ihre Zeile s.send erwartet ein Stream-Objekt. Sie geben ihm eine Zeichenfolge. Wickeln Sie Ihre Zeichenfolge mit BytesIO.

+0

Mache ich das str.encode (sys.argv [1]) ?? Ich habe das gemacht, die Fehler haben aufgehört, aber die Daten werden nicht übertragen. –

+0

@VinodK KEIN "BytesIO" verwenden. Schauen Sie in den Dokumenten nach. – Marcin

0

Welche Version von Python verwenden Sie? Von der Fehlermeldung nehme ich an, dass Sie unbeabsichtigt Python3 verwenden. Sie könnten Ihr Programm mit Python2 versuchen und es sollte in Ordnung sein.

+0

Ya ich benutze Python 3 –

+0

Vinod - Versuchen Sie es mit Python2 dann den Unterschied zu kennen. –