路飞学城Python-Day27(复习)
简单的socket通信
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 8080))
msg = input('>>>').strip()
client.send(msg.encode('gbk'))
res = client.recv(1024)
print(res)
client.close()
客户端
import socket
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.bind(('127.0.0.1', 8080))
sk.listen(5)
conn, addr = sk.accept()
res = conn.recv(1024)
conn.send(res.upper())
conn.close()
sk.close()
服务端
聊天版socket通信
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 8080))
while True:
msg = input('发送信息>>>').strip()
client.send(msg.encode('gbk'))
re = client.recv(1024)
print('接收到的消息%s'%(re.decode('gbk')))
聊天版客户端
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8080))
server.listen(5)
while True:
conn,addr = server.accept()
while True:
try:
msg = conn.recv(1024)
print('接收到客户端的信息%s'%(msg.decode('gbk')))
re = input('请回复信息>>>').strip()
conn.send(re.encode('gbk'))
except ConnectionResetError:
pass
聊天版服务端
粘包版socket通信
import socket
import struct
import pickle
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 8080))
while True:
msg = input('请输入发送的消息>>>').strip()
msg_dict = {
'msg':msg
}
msg_p = pickle.dumps(msg_dict)
client.send(struct.pack('i',len(msg_p)))
res = pickle.loads(client.recv(1024))
if res['confirm']:
client.send(msg.encode('gbk'))
else:
pass
粘包版客户端
import socket
import struct
import pickle
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8080))
server.listen(5)
while True:
conn, addr = server.accept()
while True:
res = conn.recv(4)
receive_bytes = struct.unpack('i',res)[0]
if receive_bytes<1024:
msg = {
'confirm': True,
}
msg_p = pickle.dumps(msg)
conn.send(msg_p)
res = conn.recv(1024)
print(res.decode('gbk'))
else:
msg = {
'confirm':False,
}
msg_p = pickle.dumps(msg)
conn.send(msg_p)
粘包版服务端
写一个异常
try:
int_number = int(input('请输入一个整数').strip())
print(int_number)
except Exception as e:
print(e)
写一个异常
自定义异常
class E(BaseException):
def __init__(self):
err = '发生异常了!'
BaseException.__init__(self,err)
raise E
自定义异常
windows系统版客户端和服务端
import socket
import pickle
import struct
import subprocess
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 8080))
while True:
command = input('请输入命令>>>').strip()
msg_dict = {
'msg':command
}
msg = pickle.dumps(msg_dict)
client.send(struct.pack('i', len(msg)))
res = client.recv(1024)
if pickle.loads(res)['confirm']:
client.send(command.encode('gbk'))
# 解析长度
res_len = client.recv(4)
cmd_len = struct.unpack('i',res_len)[0]
# 接收结果
fin_res = client.recv(cmd_len).decode('gbk')
print(fin_res)
else:
print('超出字符限制,请重试!')
(系统命令版)客户端
import socket
import pickle
import struct
import subprocess
# a=subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE)
# print(a.stdout.read().decode('gbk'))
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8080))
server.listen(5)
while True:
conn, addr = server.accept()
while True:
try:
res = conn.recv(4)
res_bytes = struct.unpack('i',res)[0]
if res_bytes<1024:
msg = {
'confirm':True,
}
conn.send(pickle.dumps(msg))
cmd = conn.recv(1024).decode('gbk')
cmd_res = subprocess.Popen(
cmd,
shell= True,
stdout= subprocess.PIPE,
stderr= subprocess.PIPE
)
res_cmd = cmd_res.stdout.read()
# 发送长度
conn.send(struct.pack('i',len(res_cmd)))
# 发送结果
conn.send(res_cmd)
else:
msg = {
'confirm': False,
}
conn.send(pickle.dumps(msg)) except Exception as e:
print(e)
break
(系统命令版)服务端
路飞学城Python-Day27(复习)的更多相关文章
- 路飞学城—Python爬虫实战密训班 第三章
路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...
- 路飞学城—Python爬虫实战密训班 第二章
路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...
- 路飞学城Python爬虫课第一章笔记
前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...
- 路飞学城-Python开发集训-第3章
学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...
- 路飞学城-Python开发集训-第1章
学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...
- 路飞学城-Python开发集训-第4章
学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...
- 路飞学城-Python开发集训-第2章
学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...
- 路飞学城-Python开发-第二章
''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...
- 路飞学城-Python开发-第三章
# 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...
- 路飞学城-Python开发-第一章
# 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...
随机推荐
- 网络教程(10)回顾ARP和ping数据包
Ping 192.168.20.2 ICMP Echo (Internet Control Message Protocol ICMP Echo request ICMP Echo reply 收到I ...
- 记Spring搭建功能完整的个人博客「Oyster」全过程[其二] Idea中Maven+SpringBoot多模块项目开发的设计和各种坑(模块间依赖和打包问题)
大家好嘞,今天闲着没事干开写写博客,记录一下Maven+SpringBoot的多模块设计和遇到的坑. 多模块设计 简单说明一下截止目前的需求: 需要RESTful API:对文章.标签.分类和评论等的 ...
- nlogn求逆序对&&陌上花开
前置: nlogn逆序对: 前一个小时我还真的不会这个Orz 这里运用归并排序的思想. 对于一个序列,我们把它先分开,再合并成一个有序序列. 引自https://blog.csdn.net/qq_30 ...
- find命令扩展
1.1 方法一 |xargs 通过|xargs将前面命令的执行结果传给后面. [root@znix ~]# find /clsn/ -type f -name "*.sh" |x ...
- CentOS 7下搭建高可用集群
一 .安装集群软件 必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件. 二.配置防火墙1.禁止防火墙和selinux# ...
- 【hdu 6342】Expression in Memories
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把所有的问号都改成'1' 然后会发现只有+0?这种情况 需要把?改成+. 看看这样的0后面的1是不是由问号改过来的就好了.是的话 再 ...
- BA-siemens-PXM液晶面板
PXM面板作用:可以查看模块内部的信息,可以触发控制点来近程控制模块上的点位(非常便于现场调试). 优点:1.便于现场紧急控制,有些地方是必须要加上的,如工厂控制等项目,假如机器死机,可以通过面板切换 ...
- openstack通过Network Namespace和iptables实现租户私有网络互訪和L3路由功能
安装架构介绍 本文旨在通过自己搭建类似neutron (openvswitch + gre) 实现SDN 的环境,学习了解其工作原理,模拟核心原理.比方:同一租户自己定义网络 instance 互通, ...
- BZOJ 2728 HNOI2012 与非 高斯消元
题目大意:给定k位二进制下的n个数,求[l,r]区间内有多少个数能通过这几个数与非得到 首先观察真值表 我们有A nand A = not A 然后就有not ( A nand B ) = A and ...
- 初识cocos2dx——入门第一篇
享受"啪"的按下Enter的快感. (by云风) cocos2dx是不是个toy引擎,不同的人有不同的看法.可是你不得不承认它非常受欢迎.好多非常火的手游使用的就是cocos2dx ...