代码经过网络搜索,综合算是原创吧.py脚本为服务端

项目文件在

https://github.com/jinjie412/service_client_socket

import socketserver

import json

import base64

import os

from te import OPMysql,Caltime

import time

#数据库操作

opm = OPMysql()

#加密发包内容

def crypt(source,key):

from itertools import cycle

result=''

temp=cycle(key)

for ch in source:

result=result+chr(ord(ch)^ord(next(temp))^ord('1'))

return result

def jiami(f,key):

if os.path.isfile(f):

f=open(f,encoding='gbk')

content=f.read()

# print(content)

f.close()

print(content)

# content=content.encode(encoding='gbk')

content=crypt(content,key)

print(content)

content=crypt(content,key)

print(content)

content=content.encode(encoding='gbk')

print(content)

file_size = len(content)

return file_size,content

else:

return None,False

#数据库搜索客户端发送来的信息有效性

def yz(datajs):

sql = "select id,user,dqsj,rjbh from kh where user='%s' and rjbh='%s'" %(datajs['user'],datajs['rjbh'])

res = opm.op_select(sql)

#验证用户有效性

if res:

# print(res)

timeArray = time.strptime(res[2], "%Y-%m-%d %H:%M:%S")

# print(timeArray)

#验证用户卡是否到期

dt=Caltime(time.localtime(),timeArray)

return dt

else:

return False

class myTCPhandler(socketserver.BaseRequestHandler):

def handle(self):

while True:

self.data = self.request.recv(1024).decode('gbk', 'ignore').strip()

if not self.data : break

self.data=base64.b64decode(self.data)

print(self.data)

datajs = json.loads(self.data)

print(datajs)

if yz(datajs):

#发送数据长度,发送数据内容

dsize,data = jiami('./js/'+datajs["jb"],datajs['key'])

if dsize:

#向客户端发送数据长度

self.feedback_data = ('%d' % (dsize,)).encode('gbk')

self.request.sendall(self.feedback_data)

#等待客户端返回

feedback = self.request.recv(100).decode('gbk', 'ignore').strip() #等待客户端确认

print(feedback)

if int(feedback) == dsize:

#发送所有数据

self.request.sendall(data)

else:

print('open file error')

else:

print('erro')

self.feedback_data = 'erro'.encode('gbk')

self.request.sendall(base64.b64encode(self.feedback_data))

def finish(self):

print("client is disconnect!")

host = '127.0.0.1'

port = 9090

server = socketserver.ThreadingTCPServer((host,port),myTCPhandler)

server.serve_forever()

te.py 文件

使用了数据库连接池,网络搜索

import MySQLdb

from DBUtils.PooledDB import PooledDB

import time

import datetime

mysqlInfo = {

"host": 'localhost',

"user": 'root',

"passwd": '000000',

"db": 'w',

"port": 3306,

"charset": 'utf8'

}

class OPMysql(object):

__pool = None

def __init__(self):

# 构造函数,创建数据库连接、游标

self.coon = OPMysql.getmysqlconn()

self.cur = self.coon.cursor()

# 数据库连接池连接

@staticmethod

def getmysqlconn():

if OPMysql.__pool is None:

__pool = PooledDB(creator=MySQLdb, mincached=5, maxcached=20, host=mysqlInfo['host'], user=mysqlInfo['user'], passwd=mysqlInfo['passwd'], db=mysqlInfo['db'], port=mysqlInfo['port'], charset=mysqlInfo['charset'])

print(__pool)

return __pool.connection()

# 插入\更新\删除sql

def op_insert(self, sql):

pass

# 查询

def op_select(self, sql):

try:

# print('op_select', sql)

self.cur.execute(sql) # 执行sql

select_res = self.cur.fetchone() # 返回结果为字典

# select_res =self.cur.fetchall()

return select_res

except Exception as e:

print(str(e))

return False

#释放资源

def dispose(self):

self.coon.close()

self.cur.close()

#计算到期时间

def Caltime(date1,date2):

date1=datetime.datetime(date1[0],date1[1],date1[2],date1[3],date1[4],date1[5])

date2=datetime.datetime(date2[0],date2[1],date2[2],date2[3],date2[4],date2[5])

return date2>date1

if __name__ == '__main__':

#申请资源

opm = OPMysql()

sql = "select id,user,dqsj,rjbh from w_kh where user='000' and rjbh='000'"

res = opm.op_select(sql)

print(res)

timeArray = time.strptime(res[2], "%Y-%m-%d %H:%M:%S")

print(timeArray)

dt=Caltime(time.localtime(),timeArray)

print(dt)

最后于 2018-5-5 12:27

被进口坚果编辑

,原因:

python 服务端与c++客户端通讯_[原创]python socket 服务端 与 c++客户端通讯,发包内容加密,支持大文件,并发...相关推荐

  1. socket客户端和服务器通信协议,51. Socket服务端和客户端使用TCP协议通讯

    Socket服务器是网络服务中常用的服务器.使用 go 语言实现这个业务场景是很容易的. 这样的网络通讯,需要一个服务端和至少一个客户端. 我们计划构建一个这样的通讯过程.服务端启动后等待客户端的访问 ...

  2. python监听多个udp端口_用Python写一个UDP端口测试工具(一)

    需求 最近有个运维需求,需要测试客户端的UDP端口与服务器的连通性. 需求也很简单:客户端测往服务端发UDP包,服务端收到包后响应客户端,当客户端能收到服务端的响应则可断定端口是可达的.但是客户端需要 ...

  3. 微服务及微应用拆分原则_七个微服务原则

    微服务及微应用拆分原则 This post defines microservices via seven tenets, reverse-engineered from books, article ...

  4. python查询和替换一个文本字符串_【Python】python面试题

    一些Python面试题 1. (1)python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只 ...

  5. 微服务微应用的安全测试_如何降低微服务测试成本?经验之谈

    前言 随着云原生时代的到来,越来越多的应用生在云上,长在云上,云原生是企业落地微服务的最佳伴侣.但云上应用易测性受到了很大的挑战,如何提高云上应用易测性,增强 DevOps 能力,是微服务测试要解决的 ...

  6. python linux系统管理与自动化运维_《Python Linux系统管理与自动化运维》赖明星著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 赖明星著 出版社:机械工业出版社 出版时间:2017-09-01 版次:1 开本:16开 装帧:平装 ISBN:9787111578659 版权提供:机械工业出版社 基本信息 商品名 ...

  7. python交互式编程入门先学什么_为什么 Python 对于编程入门学习来说,是一门很棒的语言...

    在这篇文章里,我会来阐述下为什么我觉得 Python 对于计算机编程入门教学来说是一门很棒的编程语言(对基础编程课程更多观点可以查看这篇文章).这也是从我针对初学者Python 编程教学过程中获得并总 ...

  8. python社区版可以用库么_应用Python,你不但能够得到出色的小区适用和普遍的库集...

    哪样计算机语言最好是?这个问题很有可能始终不容易找答案.萝卜青菜,各有所好,AI技术工程师和生物学家能够依据新项目必须,从诸多计算机语言中挑选最合适自身的. 选Python還是选Java?2020年, ...

  9. python写入excel表格数据绘制图表_(原创)xlsxwriter,python excel 写入数据\图表等操作_图表操作(二)...

    前面分享了使用xlsxwriter创建excel和写入数据GUC:(原创)xlsxwriter,python excel 写入数据\图表等操作_创建.写入(一)​zhuanlan.zhihu.com ...

最新文章

  1. AJAX范例大搜罗(转载)
  2. 哈希表(HASHTABLE)
  3. Windows环境:VMware下linux虚拟机与Windows主机进行文件共享的方法
  4. c语言键盘输入若干个数据,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...
  5. Asp.Net Core Ocelot Consul 微服务
  6. android TextView下划线,圆角边框,数逐字显示,虚线边框, 渐变色背景框, 阴影背景框
  7. Linux操作系统下进程讲解(史上最强总结)
  8. MySQL-InnoDB-事务
  9. 直接学python3_新手应该学python2还是python3?
  10. [Material Design] MaterialButton 效果进阶 动画自动移动进行对齐效果
  11. 移动html5 滑动 zepto,移动端使用zepto编写的滑动事件
  12. 鲍威尔共轭方向法c语言程序,鲍威尔共轭方向法VB源程序
  13. Ricequant-估值因子的分析
  14. ARM开发初级-Windows环境下的STM32开发环境搭建(包含missing compiler version 5的解决方法)-学习笔记02
  15. com.google.guava包里面的相关简单方法
  16. 利用关联规则挖掘中医证素与恶性肿瘤的关系
  17. python笔记2 - 函数,表达式,语句
  18. realtek是什么意思_realtek bluetooth是什么意思
  19. 社工的危害性(一)菜鸟经验_星语惜馨_新浪博客
  20. 网络购车平台哪家强?

热门文章

  1. MySQL查看数据库系统正在运行的进程
  2. Java Servlet 编程,重定向介绍
  3. stack java实现_Stack (堆栈)使用JAVA实现
  4. matlab 返回变量类型的命令,MATLAB主要命令汇总
  5. android 扫描照片功能,Android自定义View- 雷达扫描图
  6. matlab resample上采样,resample matlab实现
  7. 数据结构【双指针算法】
  8. android 圆角按钮渐变,Android实现圆形渐变加载进度条
  9. 去重 属性_面试中常问的List去重问题,你都答对了吗?
  10. pycharm cant open file_PyCharm