c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天
實現(xiàn)思路:客戶端(本機)向服務(wù)端發(fā)送消息;服務(wù)端接收消息,并調(diào)用圖靈機器人API接口,獲取回復(fù)返回給客戶端。
首先需要先去圖靈機器人http://www.tuling123.com申請帳號,并創(chuàng)建機器人應(yīng)用,獲取授權(quán)碼(apikey);
客戶端;
創(chuàng)建socket-->連接服務(wù)器-->發(fā)送請求-->關(guān)閉socket-->結(jié)束進(jìn)程
import socket
import time
def recv_msg(s):
data = s.recv(1024)
if data:
print("\n【機器人小圖】"+" "+time.strftime('%Y-%m-%d:%H:%M:%S',time.localtime(time.time())))
print(data.decode('utf-8'))
return True
return False
username = input('input your name:')
port = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', port))
# 接受服務(wù)器的welcom
data = s.recv(1024)
print(data.decode('utf-8'))
msg = input('input msg:')
s.send("{username}::{msg}".format(username=username,msg=msg).encode("utf-8"))
while True:
if recv_msg(s):
msg = input('\n I:')
s.send("{username}::{msg}".format(username=username,msg=msg).encode("utf-8"))
if msg == 'exit':
print('chat is over.')
break
s.close()
服務(wù)端;
創(chuàng)建socket-->綁定地址端口-->監(jiān)聽-->與客戶端建立連接-->處理客戶端的請求-->關(guān)閉socket
ctrl+c手動結(jié)束服務(wù)器的進(jìn)程
import socket
import time
import threading
import requests
import json
def get_response(info):
# 調(diào)用圖靈機器人API
key = 'caeac376c1084b9ca3bd762244b60ce8'
url = 'http://www.tuling123.com/openapi/api?key=' + key + '&info=' + info
res = requests.get(url)
res.encoding = 'utf-8'
jd = json.loads(res.text)
return jd['text']
# 處理客戶端的請求
def tcplink(sock, addr):
sock.send("welcom!".encode('utf-8'))
# 客戶端地址
print('client address is:', sock.getpeername())
# 本機(服務(wù)端)地址
print('server address is:', sock.getsockname())
while True:
data = sock.recv(1024).decode('utf-8')
# 處理接受到的消息
username, msg = data.split('::')[0], data.split('::')[1]
if msg == 'exit':
break
print(username+':'+time.strftime('%Y-%m-%d:%H:%M:%S',time.localtime(time.time())))
print(msg)
response = get_response(msg)
sock.send(response.encode('utf-8'))
sock.close()
print('the chat with %s is over.' % username)
port = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', port))
s.listen(5)
print("listening 127.0.0.1:%d, and waiting for connection..." % port)
while True:
sock, addr = s.accept()
t = threading.Thread(target=tcplink, args=(sock, addr, ))
t.start()
實現(xiàn)效果
在線聊天機器人
總結(jié)
以上是生活随笔為你收集整理的c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如题,用C#语言 如何给下拉列表框动态添
- 下一篇: android byte转16进制字符串