基本客户端服务器:正确传递字符串

时间:2012-03-23 21:12:56

标签: string utf-8 python-3.x client-server

我正在创建一个简单的客户端/服务器来回传递字符串。它只比echo服务器略高一些。但是,我在传递字符串时遇到了一些问题。我第一次遇到一个问题,我使用了不正确的数据类型(没有转换为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 个答案:

答案 0 :(得分:1)

需要使用解码。

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