日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天

發(fā)布時(shí)間:2024/9/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

實(shí)現(xiàn)思路:客戶端(本機(jī))向服務(wù)端發(fā)送消息;服務(wù)端接收消息,并調(diào)用圖靈機(jī)器人API接口,獲取回復(fù)返回給客戶端。

首先需要先去圖靈機(jī)器人http://www.tuling123.com申請(qǐng)帳號(hào),并創(chuàng)建機(jī)器人應(yīng)用,獲取授權(quán)碼(apikey);

客戶端;

創(chuàng)建socket-->連接服務(wù)器-->發(fā)送請(qǐng)求-->關(guān)閉socket-->結(jié)束進(jìn)程

import socket

import time

def recv_msg(s):

data = s.recv(1024)

if data:

print("\n【機(jī)器人小圖】"+" "+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)聽-->與客戶端建立連接-->處理客戶端的請(qǐng)求-->關(guān)閉socket

ctrl+c手動(dòng)結(jié)束服務(wù)器的進(jìn)程

import socket

import time

import threading

import requests

import json

def get_response(info):

# 調(diào)用圖靈機(jī)器人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']

# 處理客戶端的請(qǐng)求

def tcplink(sock, addr):

sock.send("welcom!".encode('utf-8'))

# 客戶端地址

print('client address is:', sock.getpeername())

# 本機(jī)(服務(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()

實(shí)現(xiàn)效果

在線聊天機(jī)器人

總結(jié)

以上是生活随笔為你收集整理的c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。