Python如何检查并响应套接字数据中的特定字符串?
我刚接触Python,希望能得到一些帮助。我的服务器会接收来自客户端的各种数据。我该如何修改服务器的代码,让它在收到特定的文本字符串时,能够用特定的文本字符串进行回应呢?
比如说,
客户端发送 *101#
服务器就回应“Hello World”。
但是如果客户端发送 *102#,
服务器就回应“Sorry”。
谢谢!
格雷厄姆
服务器
from socket import *
serverHost=''
serverport=50007
#open socket to listen
sSock = socket(AF_INET,SOCK_STREAM)
sSock.bind((serverHost,serverport))
sSock.listen(3)
#handle connection
while 1:
conn,addr = sSock.accept()
print ('Client Connection:', addr)
while 1:
data = conn.recv(1024)
if not data: break
print (' Server Received:', data)
newData = data.replace('Client','Processed')
conn.send(newData)
conn.close()
客户端
import sys
from socket import *
serverHost = 'localhost'
serverPort = 50007
message = ['*325#']
if len(sys.argv) > 1:
serverHost = sys.argv[1]
#create my socket
sSock = socket(AF_INET, SOCK_STREAM)
#connect to server
sSock.connect((serverHost, serverPort))
#send a message
for item in message:
sSock.send(item)
data = sSock.recv(1024)
print ('Client received: ', 'data')
sSock.close()
1 个回答
1
好吧,你可以这样做:
newData = data.replace('Client','Processed')
然后把它换成类似这样的东西:
if data == '*101#':
newData = 'Hello World'
elif data == '*102#':
newData = 'Sorry'
else:
newData = data.replace('Client','Processed')
虽然这不是最好的方法,但可以让你开始动手。