2012-03-23 4 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") 
関連する問題