2014-03-02 19 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') 

不,這是最佳的,但它應該讓你開始。

相關問題