【问题标题】:basic client server: Passing strings properly基本客户端服务器:正确传递字符串
【发布时间】:2012-04-08 10:43:48
【问题描述】:

我正在制作一个简单的客户端/服务器,它将来回传递字符串。它只比回显服务器稍微先进一点。但是,我在传递字符串时遇到了一些问题。我首先遇到了一个问题,即我使用了不正确的数据类型(未转换为 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()

现在服务器和客户端都挂了。

【问题讨论】:

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


    【解决方案1】:

    需要使用解码。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 2020-09-13
      相关资源
      最近更新 更多