c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天
实现思路:客户端(本机)向服务端发送消息;服务端接收消息,并调用图灵机器人API接口,获取回复返回给客户端。
首先需要先去图灵机器人http://www.tuling123.com申请帐号,并创建机器人应用,获取授权码(apikey);
客户端;
创建socket-->连接服务器-->发送请求-->关闭socket-->结束进程
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))
# 接受服务器的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()
服务端;
创建socket-->绑定地址端口-->监听-->与客户端建立连接-->处理客户端的请求-->关闭socket
ctrl+c手动结束服务器的进程
import socket
import time
import threading
import requests
import json
def get_response(info):
# 调用图灵机器人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())
# 本机(服务端)地址
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()
实现效果
在线聊天机器人
c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天相关推荐
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-代码解析...
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍一文之中我们对AgileEAS.NET S ...
- 人民邮电出版社图灵公司举办的与陈黎夫在线聊天活动——聊天记录
本期嘉宾:,csdn读书频道,陈黎夫,谢工,主持人,聊天话题:与"陈黎夫"在线交流活动 嘉宾[主持人]: 大家好,欢迎参加人民邮电出版社图灵公司举办的与陈黎夫在线聊天活动. [20 ...
- Java Socket实战之六 使用NIO包实现Socket通信
2019独角兽企业重金招聘Python工程师标准>>> 本文地址:http://blog.csdn.net/kongxx/article/details/7288896 Java S ...
- android socket第三方库,OkSocket 一个Android轻量级Socket通讯框架
OkSocket Document An blocking socket client for Java application or Andorid. Open source licenses Ba ...
- Unity 图灵Turning 之 在Unity中实现图灵 聊天机器人 简单聊天的功能
Unity 图灵 之 在Unity中实现图灵 聊天机器人 简单聊天的功能 目录 Unity 图灵 之 在Unity中实现图灵聊天机器人简单聊天的功能 一.简单介绍 二.图灵官网关于在线聊天机器人的接入 ...
- 关于Go语言在服务端做Restful接口和socket通信
转载自: http://xiaorui.cc/2014/10/25/%e5%85%b3%e4%ba%8ego%e8%af%ad%e8%a8%80%e5%9c%a8%e6%9c%8d%e5%8a%a1% ...
- C语言N台服务器通信,使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序 ....
#include */ #define HELLO_WORLD_SERVER_PORT 6666 #define BUFFER_SIZE 1024 #define FILE_NAME_MAX_S ...
- 使用python的socket实现简单的加密通信
编程思路: 客户端和服务器端建立连接 客户端产生非对称密钥,将公钥传送给服务器端 服务器端通过公钥将密钥进行加密并传送给客户端 客户端接收到密钥并进行解密,双方开始通信 背景资料: AES原理(图解密 ...
- 网络编程+go+java_GO语言的进阶之路-网络编程之socket
GO语言的进阶之路-网络编程之socket 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是socket; 在说socket之前,我们要对两个概念要有所了解,就是IP和端口 ...
最新文章
- 抖音怎么上传无损画质_抖音怎么上传高清视频?干货,从此告别模糊
- List 集合remove问题
- 关于npm 的注意事项
- struts 的action 线性安全问题
- 这几条Mac技巧可能在你使用mac时锦上添花
- [ACM] hdu 2079 选课时间(普通型母函数)
- python 制作网页 选择题_python爬取网页电子课本图片,自己制作可打印的课本文件...
- 亲测:优酷下载的会员独享KUX视频快速转换成MP4格式!
- Unity2D:简单人物纸娃娃换装实现(一) 服装的变换
- RS485接线 | Modbus智能LED三色声光报警器 机房警示灯带蜂鸣器
- 错题合集1_JavaSE章节测试
- eclipse 修改为黑色主题,并且功能比默认的方便
- 理解Cookie机制
- 俄罗斯最大的盗版资源网站,解封了!
- java数组查找奇数_java – 在数组中对偶数和奇数进行排序
- 【操作系统】用户态和内核态
- 【IDEA】- IDEA导入 mysql驱动包的时候 编译时可以找到驱动包 , 但是运行时无法找到
- 原生微信小程序项目基础框架搭建
- 期货开仓又被爆?永续合约了解一下
- 行业洞察 | AI贩卖的焦虑,我们该买单吗?
热门文章
- CVPR 2021 | 自适应激活函数ACON:统一ReLU和Swish的新范式
- 贝叶斯神经网络对梯度攻击的鲁棒性
- 直播报名 | 小身材大能量!用英伟达智能小车Jetbot玩转深度学习
- 牛客网 二叉树的层序遍历
- mysql 十八哥_十八哥Mysql笔记之基础篇
- LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
- [POI2002][HAOI2007]反素数
- 桂林电子科技大学计算机导论,Welcome to Guilin University of Electronic Technology(桂林电子科技大学)...
- mysql可以存储标点么_MySQL命名、设计及使用规范--------来自标点符的《MySQL命名、设计及使用规范》...
- tomcat运行错误: 无效的源发行版:16