本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows)。后来发现实现起来特别麻烦, 就想到python。听说这家伙在什么地方都能发挥作用。所以想用python来做通讯模块。。。所以主要学习pythonn的多线程和tcp连接。

但是没有用过python, 所有在学习python的同时写个小小的程序 -》 和机器人聊天

本程序机器人由【图灵机器人 http://www.tuling123.com】提供, 把编写的例子发了出来供初学python的朋友们学习和熟悉。

注意:python版本必须为3.x +, 不兼容2.x版本的python

文件列表:

main_server.py: 服务端程序,用于接收客户端的信息, 并返回Jinko回答的话

# tcp server

import socket;

import time;

import threading;

from JinkoRobot import *;

#应用程序入口类

class ApplicationServer:

#构造函数初始化 socket

def __init__(self, host="localhost", port=8005):

self.connList = [];

self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM);

self.socket.bind((host, port));

self.socket.listen(100);

print("我是Jinko, 我来自[图灵机器人:http://www.tuling123.com]");

print("");

print("赶紧打开客户端和我聊天吧!");

self.accept();

#多线程接受用户请求

def accept(self):

while True:

connection, address = self.socket.accept();

# print('connect')

thread = ChatThread(connection);

thread.start();

#聊天线程

class ChatThread(threading.Thread):

def __init__(self, conn):

threading.Thread.__init__(self);

self.__connection = conn;

def run(self):

while True:

try:

recv = self.__connection.recv(8192);

except:

break;

# print("收到:" + recv.decode('utf-8'))

rebot = JinkoRobot();

rebot.listenFor(recv.decode('utf-8'));

answer = rebot.answer();

# print('say:' + answer)

self.__connection.send(answer.encode('utf-8'));

ApplicationServer();

main_client.py: 客户端程序, 用于和Jinko发起聊天

import socket;

import time;

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM);

print("正在和Jinko连线...");

sock.connect(('localhost', 8005));

print("");

while True:

speak = input("和Jinko说点什么:");

if speak == "quit":

break;

if speak == "":

continue;

# print("发送中..." + "("+ speak +")")

sock.send(speak.encode('utf-8'));

# print("已发送")

print("Jinko在思考...");

answer = sock.recv(8192);

print("Jinko回复你:" + answer.decode('utf-8'));

print("");

sock.close();

JinkoRobot.py: 它就是Jinko啦啦啦~~

#Jinko Robot

import json;

import urllib.request;

import urllib.parse;

class JinkoRobot:

__answer = '';

def __init__(self):

pass;

#倾听话语

def listenFor(self, string):

self.__answer = self.thinking(string);

# 思考着

def thinking(self, string):

says = urllib.parse.quote_plus(string);

f = urllib.request.urlopen("http://www.tuling123.com/openapi/api?key=4bc32d41c10be18627438ae45eb839ac&info=" + says);

json_str = f.read();

thinkdata = json.loads(json_str.decode('utf-8'));

f.close();

if(thinkdata['code'] > 40000 and thinkdata['code'] < 40010):

return "今天Jinko被你问得有点累了, 过会再问吧!";

if(thinkdata['code'] == 200000):

return thinkdata['text'] + ", 猛戳这里>>" + thinkdata['url'];

if(thinkdata['code'] == 302000) :

info = thinkdata['text'];

for content in thinkdata['list']:

info += "\n\n>" + content['article'] \

+ " 来源于" + content['source'] \

+ " 详细信息请猛戳这里>>" + content['detailurl'];

return info;

if(thinkdata['code'] == 305000):

info = thinkdata['text'];

for key in thinkdata['list']:

info += "\n\n>" + key + ": 车次>" + content['trainnum'] \

+ " 从" + content['start'] + "到" + content['terminal'] \

+ " 发车时间:" + content['starttime'] \

+ " 到达时间:" + content['endtime'] \

+ " 详细信息请猛戳这里>>" + content['detailurl'];

return info;

return thinkdata['text'];

#和你交流回答

def answer(self):

return self.__answer;

运行效果图:

最后我想说下, 我只是python的初学者,没啥python经验哈

我最近用Python写了一个算法,不需要写任何规则就能自动识别一个网页的内容

我最近用Python写了一个算法,不需要写任何规则就能自动识别一个网页的内容,目前测试了300多个新闻网站的新闻页,都能准确识别

用Python写了一个postgresql函数,感觉很爽

用Python写了一个postgresql函数,感觉很爽 CREATE LANGUAGE plpythonu; postgresql函数 CREATE OR REPLACE FUNCTION myfu ...

使用itchat实现一个微信机器人聊天回复功能

近看到好多群里都有一个@机器人的功能,挺有趣的,想自己也玩下,就通过百度一点点实现,在这总结一下整个从无到有的过程. 首先,要知道itchat,它是Python写的,所以想要实现这个机器人的功能,需要 ...

python写的一个集合

起因:原本打算用python写一个抢火车票的脚本.在那 期间遇见各种浏览器驱动失败的节奏....打算先缓一下 然后就去写集合了. 0x01 源码: # -*- coding:'utf-8' -*- # ...

试着用c写了一个多线程的同步

在Java中写多线程相关的程序简单很多,在多线程中需要同步的时候,使用synchronized就行了. 最近学习c的多线程与同步,感觉实现起来,要写的代码比较多一些,这也许是因为java封装的比较好吧 ...

python socket编程 实现简单p2p聊天程序

目标是写一个python的p2p聊天的项目,这里先说一下python socket的基础课程 一.Python Socket 基础课程 Socket就是套接字,作为BSD UNIX的进程通信机制,取后 ...

socket实例C语言:一个简单的聊天程序

我们老师让写一个简单的聊天软件,并且实现不同机子之间的通信,我用的是SOCKET编程.不废话多说了,先附上代码: 服务器端server.c #include #incl ...

使用Python写的第一个网络爬虫程序

今天尝试使用python写一个网络爬虫代码,主要是想訪问某个站点,从中选取感兴趣的信息,并将信息依照一定的格式保存早Excel中. 此代码中主要使用到了python的以下几个功能,因为对python不 ...

10分钟用Python告诉你两个机器人聊天能聊出什么火花

欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 现在不是讲各种各样的人工智能嘛,AI下棋,AI客服,AI玩家--其实我一直很好奇,两个AI碰上会怎样,比如一起下棋,一起打游戏-- 今天做个 ...

随机推荐

PRINCE2风险模块

我们前几个节学习了PRINCE2七大主题的商业论证.组织.质量和计划,今天我们开展对于风险模块的讲解. 风险:目的是识别.评估和控制不确定性,从而提高项目的成功率.PRINCE2对风险登记册进行了详细 ...

sqlserver同步后在不重新初始化快照的情况下新增表

在已有事务复制中,时长需要新增表.索引,这些变更时不会同步到从库中.如果采用默认的设置,每次都需要重新初始化快照,从库重新应用快照和未执行的同步命令,这显然是无法在线上实践的方法.另一种 ...

&lpar;一&rpar;win7下cocos2d-x 21 &plus; vs2010

1.下载SDK http://cocos2d.cocoachina.com/download,我下载2.1版本,cocos2d-2.1rc0-x-2.1.2-hotfix.zip @ Apr.08, ...

MVC - 布局

布局类似于APSX视图的母版页 用的是Razor的语法 创建布局 布局页面默认放在Shared目录 有几个自动生成的cshtml文件 删除它们 然后创建一个视图 命名为MyLayOut 取消勾选使用母 ...

css-文本及其他

css7-文本和其他 text-align行内元素对齐方式,值为 左/中/右 对齐:left/right/center.test{text-align:cen ...

ArrayList与LinkedList时间复杂度之对比

package ArrayList; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections ...

getReadableDatabase 和 getWritableDatabase的区别

(1)getWritableDatabase()方法以读写方式打开数据库.一旦数据库的磁盘空间满了,数据库就只能读而不能写,此时用getWritableDatabase()打开数据库就会出错. (2) ...

Linux系统一些常用命令(持续增加)

这些命令什么的全是从网上找的,防止忘记,留下来备忘 1.linux服务器如何从另一台服务器拷东西:可以用scp命令scp user@remote.machine:/remote/path /local ...

2018&quot&semi;百度之星&quot&semi;程序设计大赛 - 资格赛hdu6349三原色(最小生成树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6349 题目: 三原色图 Time Limit: 1500/1000 MS (Java/Others)  ...

golang string int int64转换

#string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, 6 ...

python写机器人程序_用Python写的一个多线程机器人聊天程序相关推荐

  1. python收集数据程序_用Python挖掘Twitter数据:数据采集

    原标题:用Python挖掘Twitter数据:数据采集 作者:Marco Bonzanini 翻译:数盟 这是7部系列中的第1部分,注重挖掘Twitter数据以用于各种案例.这是第一篇文章,专注于数据 ...

  2. 通信软件基础B-重庆邮电大学-Java-编程实现一个简单的聊天程序-多线程编程实现

    实验任务六 编程实现一个简单的聊天程序-多线程编程实现 1. 系统设计要求 编程实现一个简单的聊天程序,实现两台计算机间的信息交互,使用多线程编程实现:可同时连接多个客户端,服务器收到客户端发送的消息 ...

  3. python 提取网页正文_用Python写个爬虫小程序,给女朋友每日定时推送睡前小故事...

    ↑ 关注 + 星标 ,每天学Python新技能后台回复[大礼包]送你Python自学大礼 导读:这篇文章利用简单的Python爬虫.邮件发送以及定时任务实现了每天定时发送睡前小故事的功能,是一篇步骤详 ...

  4. 用python写投票程序_大话python最终篇,web.py 开发的投票程序demo

    概述 开发语言         python Web开发框架  web.py 前端开发框架   vuejs+elementui 数据库              mysql 设计思路 首先是数据库设计 ...

  5. python测试抽奖脚本_使用 Python 写一个简易的抽奖程序

    不知道有多少人是被这个头图骗进来的:) 事情的起因是这样的,上周有同学问小编,看着小编的示例代码敲代码,感觉自己也会写了,如果不看的话,七七八八可能也写的出来,但是一旦自己独立写一段程序,感觉到无从下 ...

  6. python写采集程序_用python写的一个wordpress的采集程序

    在学习python的过程中,经过不断的尝试及努力,终于完成了第一个像样的python程序,虽然还有很多需要优化的地方,但是目前基本上实现了我所要求的功能,先贴一下程序代码: 具体代码如下: #! /u ...

  7. 用python做毕业设计小程序_用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput des ...

  8. python写一个表白程序_用Python个女神做一个表白神器

    用Python给女神表白 情人节刚刚过去,但男同胞们对女神的暗恋愈加热烈,想尽一切办法表白,今天,咱们就用Python制作一个表白神器. 程序介绍 运用pygame制作一个小游戏,当女神用鼠标点击&q ...

  9. python写新年快乐程序_新年快乐! python实现绚烂的烟花绽放效果

    新年快乐! python实现绚烂的烟花绽放效果 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  新年快乐! python实现绚烂的烟花绽放效果.txt ] (友情 ...

最新文章

  1. solr 下载 有dist目录的(6需要8)
  2. P1640 [SCOI2010]连续攻击游戏 匈牙利算法
  3. golang 函数结束后 goroutine退出机制
  4. ArcObjects中的几何对象简介(一)
  5. 深度学习核心技术精讲100篇(二十二)-深度解析数学建模核心知识之搜索与推荐模型中用户建模原理
  6. Spring-依赖注入
  7. 程序员,别了校园入了江湖
  8. 【JAVA编码专题】UNICODE,GBK,UTF-8区别
  9. Activity Monitor 闪退 无法进入睡眠
  10. 【OpenCV CUDA】OpenCV和Cuda结合编程
  11. python执行方式及变量
  12. 《认知盈余》核心摘要——“人们实际上很喜欢创造并分享”: 参与是一种行为
  13. 小学计算机期末评价方案,小学班级管理评价方案
  14. 5类6类7类网线对比_超五类、六类、七类网线竟然有这么多不同之处
  15. matlab如何提取文本词干,英文词干提取(stemming)算法 - Lovins, Porter
  16. Python  UnicodeEncodeError 和 surrogates not allowed 报错处理
  17. 我如何启动任何.NET Core Web API项目
  18. 软件测试---沟通技能总结
  19. 解析微分电路和积分电路的区别
  20. excel能和html链接吗,非常棒的 Excel 超链接功能可以跳转到网址和邮箱等

热门文章

  1. CQYZOJ P1392 拔河问题
  2. Java:控制台输入车辆信息,将信息保存至数据库中
  3. gitbook 入门教程之解决windows热加载失败问题
  4. 使用javascript打开模态对话框
  5. SQL Server 2005参考:Apply运算符
  6. JS一维数组转化为三维数组有这个方法就够了
  7. docker --- 镜像、容器
  8. 汇编 --- 从磁盘(扇区2到18)上读取数据到内存中
  9. HashMap深度解析:一文让你彻底了解HashMap
  10. lucene之Field属性的解释