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()
今、サーバーとクライアントの両方がちょうど取得ハングアップ
は、ここに私のサーバーのコードです。