python(39)- 网络编程socket练习
基于tcp的套接字实现远程执行命令的操作
#服务端 import socket
import subprocess
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip_port=("127.0.0.1",8080)
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
phone.bind(ip_port)
phone.listen(5) while True:
conn,addr=phone.accept()
print(addr)
while True:
try:
cmd=conn.recv(1024)
res=subprocess.Popen(cmd.decode("utf8"),
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE) #注释掉的这么多行,是因为在linux系统下同时执行多条命令,命令中如果有对有错的话res.stderr.read()和res.stdout.read()都会有返回值。
#err=res.stderr.read()
#if err:
# cmd_res=err
#else:
# cmd_res=res.stdout.read()
#conn.send(cmd_res)
#修改为:
conn.send(res.stdout.read())
conn.send(res.stderr.read()) except Exception:
break
conn.close()
phone.close()
#客户端 import socket
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.connect(("192.168.85.129",8080))
while True:
cmd=input(">>:").strip()
if not cmd:continue
phone.send(cmd.encode("utf8"))
data=phone.recv(8192) #当命令行打印的东西太长时,接收超过1024,所以这里修改为8192
print(data.decode("utf8")) #当服务端运行在linux系统下,为utf8;服务端在windows下运行时,为gbk phone.close()
当服务端运行在Windows系统下,若客户端发送给服务端识别window系统的命令,服务端将执行windows系统命令的结果发送给客户端显示,不能识别的则发送错误信息给客户端。
同样当服务端在linux系统下运行,若客户端发送给服务端识别linux系统的命令,服务端将执行windows系统命令的结果发送给客户端显示,不能识别的则发送错误信息给客户端。
python(39)- 网络编程socket练习的更多相关文章
- Python之网络编程Socket
Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络 ...
- Python的网络编程 Socket编程
Socket是进程间通信的一种方式,与其他进程间通信的一个主要不同是:能实现不同主机间的进程间通信,网络上各种各样的服务大多都是基于Socket来完成通信的,要解决网络上两台主机间的通信问题,首先要唯 ...
- Python的网络编程socket模块
(1)利用socket进行简单的链接 Python里面的socket支持UDP.TCP.以及进程间的通信,socket可以把我们想要发送的东西封装起来,发送过去,然后反解成原来的样子,事实上网路通信可 ...
- Python之网络编程 Socket编程
本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实 ...
- python网络编程socket /socketserver
提起网络编程,不同于web编程,它主要是C/S架构,也就是服务器.客户端结构的.对于初学者而言,最需要理解的不是网络的概念,而是python对于网络编程都提供了些什么模块和功能.不同于计算机发展的初级 ...
- Python网络编程-Socket简单通信(及python实现远程文件发送)
学习python中使用python进行网络编程,编写简单的客户端和服务器端进行通信,大部分内容来源于网络教程,这里进行总结供以后查阅. 先介绍下TCP的三次握手: 1,简单的发送消息: 服务器端: i ...
- python网络编程——socket基础篇
python的网络编程比c语言简单许多, 封装许多底层的实现细节, 方便程序员使用的同时, 也使程序员比较难了解一些底层的东西. 1 TCP/IP 要想理解socket,首先得熟悉一下TCP/IP协议 ...
- Python网络编程socket
网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...
- python之网络编程
本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具名的) 远程过程调用 ...
- Python高级网络编程系列之第一篇
在上一篇中我们简单的说了一下Python中网络编程的基础知识(相关API就不解释了),其中还有什么细节的知识点没有进行说明,如什么是TCP/IP协议有几种状态,什么是TCP三次握手,什么是TCP四次握 ...
随机推荐
- Docker Caffe部署
Caffe是一个清晰而高效的深度学习框架,纯粹的C++/CUDA架构,支持命令行.Python和MATLAB接口:可以在CPU和GPU直接无缝切换 Caffe的优势 上手快:模型与相应优化都是以文本形 ...
- MacPorts的安装和使用
1.安装 MacPorts的官方网站:http://www.macports.org/install.php 有dmg安装和源代码安装两种方式,下载dmg格式一步步安装即可 2.使用 更新ports ...
- kb-07线段树--11--区间多重该值多种查询
/* lazy思想的运用,因为查询多种,如果全记录就太繁了,lazy就是如果该区间的每一个叶子的状态都相同就不用深入下去该值,只要暂时标记下,查询的时候也不用下去,直接计算: */ #include& ...
- 使用 SOAPUI 测试Web Service
原文地址:https://www.ibm.com/developerworks/cn/webservices/1106_webservicessecurity/index.html(里面内容比较多不用 ...
- CentOS 7.4升级Linux内核
CentOS 7.4升级Linux内核 [日期:2018-01-15] 来源:Linux社区 作者:straycats [字体:大 中 小] 由于最近intel出了Meltdown和Spectre两 ...
- UVa11424 GCD - Extreme (I)
直接两重循环O(n^2)算gcd……未免太耗时 枚举因数a和a的倍数n,考虑gcd(i,n)==a的i数量(i<=n) 由于gcd(i,n)==a等价于gcd(i/a,n/a)==1,所以满足g ...
- Solr5.2.1+Zookeeper3.4.9分布式集群搭建
1.选取三台服务器 由于机器比较少,现将zookeeper和solr都部署在以下三台机器上.(以下操作都是在172.16.20.101主节点上进行的哦) 172.16.20.101 主节点 172.1 ...
- 在vue-cli环境下模拟数据接口及如何应用mockjs
第一种办法 1.需要先准备json文件 在根目录下新建个oapi文件夹下新建个iorder.json文件将需要遍历的json数据沾里面. 2.在build文件夹下新建dev-server.js 文件 ...
- buffer和cache怎么让你们解释的那么难理解?
对于一个即将踏上“系统运维”或者更加高大尚的工作“系统调优”,如果这不跟这两哥们搞好关系了,坑的不只有内存,更坑的是你拿着调优的钱却干着随时被调的活.因为作为一个系统运维人员来说监控和优化IO性能这是 ...
- HDU 1754:I Hate It(线段树-单点更新)
题意: 1~N这些人有一些分数,之后有M条操作.要求支持两种操作:更新其中某个人的成绩,查询[A,B]区间内的人的最高成绩. ( 0<N<=200000,0<M<5000 ) ...