2012-03-23 77 views
0

我正在制作一个简单的客户端/服务器,它将来回传递字符串。它只比回声服务器稍高一点。但是,我在传递字符串时遇到了一些问题。我首先遇到了使用不正确数据类型(不转换为utf-8)的问题,但仍然存在问题。基本客户端服务器:正确传递字符串

这里是我的服务器代码:

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) 

和客户端代码:

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() 

现在服务器和客户一下就挂断。

回答

1

需要使用解码。

data = s.recv(size).decode("utf-8") 
相关问题