socket編程學習-------python打造聊天機器人

前面咱們講到了socket編程,講的都是一些概念性的東西。此次咱們來利用套接字編程原理打造一個聊天機器人。python

在這以前咱們先來實現一個「復讀機」的功能,就是你說什麼,我也說什麼!編程

服務器端代碼以下:json

 1 # -*- coding:utf-8 -*-
 2 
 3 
 4 import socket
 5 import sys
 6 sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#類別  流式(建立套接字)
 7 host = '127.0.0.1' #服務器ip名
 8 port =9999#端口號
 9 sk.bind((host,port))#將socket綁定到指定的地址
10 sk.listen(3)#指定最多容許多少客戶鏈接到服務器
11 
12 while 1:
13     clnt,addr =sk.accept()
14     print 'clnt address:',addr
15     while True:
16         data = clnt.recv(10)
17         if not data:
18             sys.exit()
19         print 'going to run cmd:',data
20 
21         clnt.sendall(data)
22 clnt.close()

客戶端代碼以下:api

 1 # -*- coding:utf-8 -*-
 2 
 3 import socket
 4 s = socket.socket()
 5 s.connect(('127.0.0.1',9999))
 6 while 1:
 7     cmd = raw_input('please input cmd:')
 8     if cmd == 'quit':
 9         break
10     elif cmd == '':
11         continue
12     s.sendall(cmd)
13     data = s.recv(2048)
14     print data
15 s.close()

效果以下:服務器

是否是感受很神奇!那麼接下里咱們就來玩玩機器人吧!socket

服務器端代碼以下:ui

 1 # -*- coding:utf-8 -*-
 2 
 3 import socket
 4 import urllib
 5 import json
 6 import sys
 7 reload(sys)
 8 sys.setdefaultencoding('utf-8')
 9 
10 #info = 'python'
11 def get_computer(info):
12     key = '186cccedc79549ecac4dcc8a56fc9fb4'
13     api = 'http://www.tuling123.com/openapi/api?key='+key+'&info='+info
14     response =urllib.urlopen(api).read()
15     dic_json = json.loads(response)
16     return '機器人:'.decode('utf-8')+dic_json['text']
17 host = socket.gethostbyname(socket.gethostname())
18 print host
19 port =11112
20 s = socket.socket()
21 s.bind((host,port))
22 s.listen(1)
23 
24 while True:
25     clnt,addr = s.accept()
26     print 'client address:',addr
27     while True:
28         data = clnt.recv(1024)
29         #print data
30         if not data:sys.exit()
31         print 'going to :',data
32         result = get_computer(data)
33         if len(result) == 0:
34             result = "EXD"
35         clnt.sendall(result)
36 
37 clnt.close()

客戶端代碼以下:url

 1 # -*- coding:utf-8 -*-
 2 
 3 import socket
 4 
 5 s = socket.socket()
 6 
 7 host = socket.gethostbyname(socket.gethostname())
 8 
 9 port = 11112
10 
11 s.connect((host,port))
12 
13 while True:
14     cmd = raw_input('Please input line:')
15 
16     if cmd == 'quit':
17         break
18     elif cmd == '':
19         continue
20     s.sendall(cmd)
21     data = s.recv(1024)
22     print data
23 
24 s.close()

效果以下:spa

是否是很炫酷呢!其實很簡單的,就是調用了一個圖靈機器人的api做爲服務器端!code

相關文章
相關標籤/搜索