实现思路:客户端(本机)向服务端发送消息;服务端接收消息,并调用图灵机器人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实现机器人在线聊天相关推荐

  1. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-代码解析...

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍一文之中我们对AgileEAS.NET S ...

  2. 人民邮电出版社图灵公司举办的与陈黎夫在线聊天活动——聊天记录

    本期嘉宾:,csdn读书频道,陈黎夫,谢工,主持人,聊天话题:与"陈黎夫"在线交流活动 嘉宾[主持人]: 大家好,欢迎参加人民邮电出版社图灵公司举办的与陈黎夫在线聊天活动. [20 ...

  3. Java Socket实战之六 使用NIO包实现Socket通信

    2019独角兽企业重金招聘Python工程师标准>>> 本文地址:http://blog.csdn.net/kongxx/article/details/7288896 Java S ...

  4. android socket第三方库,OkSocket 一个Android轻量级Socket通讯框架

    OkSocket Document An blocking socket client for Java application or Andorid. Open source licenses Ba ...

  5. Unity 图灵Turning 之 在Unity中实现图灵 聊天机器人 简单聊天的功能

    Unity 图灵 之 在Unity中实现图灵 聊天机器人 简单聊天的功能 目录 Unity 图灵 之 在Unity中实现图灵聊天机器人简单聊天的功能 一.简单介绍 二.图灵官网关于在线聊天机器人的接入 ...

  6. 关于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% ...

  7. C语言N台服务器通信,使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序 ....

    #include */ #define HELLO_WORLD_SERVER_PORT    6666 #define BUFFER_SIZE 1024 #define FILE_NAME_MAX_S ...

  8. 使用python的socket实现简单的加密通信

    编程思路: 客户端和服务器端建立连接 客户端产生非对称密钥,将公钥传送给服务器端 服务器端通过公钥将密钥进行加密并传送给客户端 客户端接收到密钥并进行解密,双方开始通信 背景资料: AES原理(图解密 ...

  9. 网络编程+go+java_GO语言的进阶之路-网络编程之socket

    GO语言的进阶之路-网络编程之socket 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是socket; 在说socket之前,我们要对两个概念要有所了解,就是IP和端口 ...

最新文章

  1. 抖音怎么上传无损画质_抖音怎么上传高清视频?干货,从此告别模糊
  2. List 集合remove问题
  3. 关于npm 的注意事项
  4. struts 的action 线性安全问题
  5. 这几条Mac技巧可能在你使用mac时锦上添花
  6. [ACM] hdu 2079 选课时间(普通型母函数)
  7. python 制作网页 选择题_python爬取网页电子课本图片,自己制作可打印的课本文件...
  8. 亲测:优酷下载的会员独享KUX视频快速转换成MP4格式!
  9. Unity2D:简单人物纸娃娃换装实现(一) 服装的变换
  10. RS485接线 | Modbus智能LED三色声光报警器 机房警示灯带蜂鸣器
  11. 错题合集1_JavaSE章节测试
  12. eclipse 修改为黑色主题,并且功能比默认的方便
  13. 理解Cookie机制
  14. 俄罗斯最大的盗版资源网站,解封了!
  15. java数组查找奇数_java – 在数组中对偶数和奇数进行排序
  16. 【操作系统】用户态和内核态
  17. 【IDEA】- IDEA导入 mysql驱动包的时候 编译时可以找到驱动包 , 但是运行时无法找到
  18. 原生微信小程序项目基础框架搭建
  19. 期货开仓又被爆?永续合约了解一下
  20. 行业洞察 | AI贩卖的焦虑,我们该买单吗?

热门文章

  1. CVPR 2021 | 自适应激活函数ACON:统一ReLU和Swish的新范式
  2. 贝叶斯神经网络对梯度攻击的鲁棒性
  3. 直播报名 | 小身材大能量!用英伟达智能小车Jetbot玩转深度学习
  4. 牛客网 二叉树的层序遍历
  5. mysql 十八哥_十八哥Mysql笔记之基础篇
  6. LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
  7. [POI2002][HAOI2007]反素数
  8. 桂林电子科技大学计算机导论,Welcome to Guilin University of Electronic Technology(桂林电子科技大学)...
  9. mysql可以存储标点么_MySQL命名、设计及使用规范--------来自标点符的《MySQL命名、设计及使用规范》...
  10. tomcat运行错误: 无效的源发行版:16