2012-03-23 9 views
0

Ich mache einen einfachen Client/Server, der Zeichenfolgen hin und her übergeben wird. Es ist nur geringfügig fortgeschrittener als ein Echo-Server. Allerdings habe ich ein Problem mit der Weitergabe der Saiten. Ich bin zuerst auf ein Problem gestoßen, bei dem ich den falschen Datentyp verwendet habe (ich konvertiere nicht nach utf-8), habe aber immer noch ein Problem.Basis-Client-Server: Strings ordnungsgemäß übergeben

Hier ist mein Server-Code:

import socket 
import re 

host  = '' 
port  = 15008 
backlog = 5 
size  = 1024 
QUIT  = bytes("QUIT" , "utf-8") 
BYE  = bytes("BYE"  , "utf-8") 
MATCH = bytes("MATCH" , "utf-8") 
NO_MATCH = bytes("NO MATCH", "utf-8") 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((host,port)) 
s.listen(backlog) 

while 1: 
    client, address = s.accept() 

    regex = client.recv(size) 
    if regex == QUIT: 
     client.send(BYE) 
     client.close() 
     break 

    string = client.recv(size) 
    if string == QUIT: 
     client.send(BYE) 
     client.close() 
     break 

    if re.match(regex, string): 
     client.send(MATCH) 
    else: 
     client.send(NO_MATCH) 

und der Client-Code:

import socket 

host = 'localhost' 
port = 15008 
size = 1024 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((host,port)) 

s.send(bytes('[ws]', "utf-8")) 
s.send(bytes('s', "utf-8")) 
data = s.recv(size) 
print('Should match: ' + data) 

s.close() 

Rechts beide jetzt die Server- und Client nur hängen gebliebenen bekommen.

Antwort

1

Zum Entschlüsseln benötigt.

data = s.recv(size).decode("utf-8") 
Verwandte Themen