Python如何检查并响应套接字数据中的特定字符串?

1 投票
1 回答
1136 浏览
提问于 2025-04-17 20:27

我刚接触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')

虽然这不是最好的方法,但可以让你开始动手。

撰写回答