2014-03-02 18 views
1

我是Python新手,希望得到一些帮助。我的服务器从客户端接收任何类型的数据。我如何修改服务器代码,使其在接收到某个文本字符串时用特定的文本字符串进行响应?Python如何检查并响应套接字数据中的特定字符串?

E.g. 客户端发送* 101# 和服务器使用的Hello World

响应,但如果客户端发送* 102# 服务器将以对不起

感谢响应 格雷厄姆

服务器

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

那么,就慢慢:

newData = data.replace('Client','Processed') 

和喜欢的东西替代它:

if data == '*101#': 
    newData = 'Hello World' 
elif data == '*102#': 
    newData = 'Sorry' 
else: 
    newData = data.replace('Client','Processed') 

不,这是最佳的,但它应该让你开始。

相关问题