python 基于TCP协议的套接字编程详解


Posted in Python onJune 29, 2019

基于TCP协议的套接字编程

实现电话沟通为例,这里传递的是字符,可以自己尝试去发送一个文件

# 服务端
import socket
# 1. 符合TCP协议的手机
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # TCP
# 2. 绑定手机号 一个服务器,我们自己的电脑作为服务器的话,用自己的IP地址
server.bind(('127.0.0.1',8000)) # 127.0.0.1 代表本地
# server.bind(('192.168.11.251',8000)) 
server.listen(5) # 半连接池 可以同时接收5个客户端
# 3. 等待客户端连接
print('start...')
# 链接循环
while True:
# 通信循环
conn,client_addr = server.accept()
while True:
try:
# 4. 收到信息 receive
data = conn.recv(1024) # 每次接收多少字节,如果改为10,客户端输入dir,(可以在cmd中输入 dir,看看会得到什么) ,会出现什么情况呢,下次的博客会讲到粘包问题,以及如何处理粘包问题
print(data)
# 5. 回消息
conn.send(data.upper())
except ConnectionAbortedError:
continue
except ConnectionResetError:
break
# 客户端1
import socket
# 1. 创建符合TCP协议的手机
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 2. 拨号
client.connect(('127.0.0.1',8000))
while True:
msg = input('please enter your msg') # dir
# 3. 发送消息
client.send(msg.encode('utf8'))
# 4. 接收消息
data = client.recv(1024)
print(data)
# 客户端2
import socket
# 1. 创建符合TCP协议的手机
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 2. 拨号
client.connect(('127.0.0.1',8000))
# msg = input('please enter your msg>>>')
# 3. 发送消息
client.send('hello'.encode('utf8'))
client.send('world'.encode('utf8'))
# 4. 接收信息
data = client.recv(1024)
print(data)

模拟ssh远程执行命令(linux系统)

# ssh服务端
import socket
import subprocess
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('192.168.11.251',8000)) # 这是我的机子,客户端可以是其他人的机子
server.listen(5)
print('start...')
while True:
conn,cient_addr = server.accept()
print(client_addr) # 打印出的是其他人机子的IP
while True:
try:
cmd = conn.recv(1024) # dir
print(cmd)
# 帮你执行cmd命令,然后把执行结果保存到管道里
pipeline = subprocess.Popen(cmd.decode('utf8'),
shell = True,
stderr = subprocess.PIPE, # std 标准
stdout = subprocess.PIPE)
stderr = pipeline.stderr.read()
stdout = pipeline.stdout.read()
conn.send(stderr)
conn.send(stdout)
except ConnectionResetError:
break
# ssh客户端
import socket
# 1.创建符合TCP协议的手机
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 2. 拨号
client.connect(('192.168.11.210',8000))
while True:
msg = input('please enter your msg') # dir
# 3. 发送消息
client.send(msg.encode('utf8'))
# 4. 接收消息
data = client.recv(10)
print(data.decode('gbk')) # 在mac电脑上可能是'utf8'

学习最有效的方法一定是有输入,一定要输出,这样学的东西才能真正得有用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python3音乐播放器简单实现代码
Apr 20 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
从django的中间件直接返回请求的方法
May 30 Python
python最长回文串算法
Jun 04 Python
解决python报错MemoryError的问题
Jun 26 Python
详解flask表单提交的两种方式
Jul 21 Python
django2.0扩展用户字段示例
Feb 13 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
python 多进程和协程配合使用写入数据
Oct 30 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 #Python
简单了解Python matplotlib线的属性
Jun 29 #Python
Jacobi迭代算法的Python实现详解
Jun 29 #Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 #Python
python异步实现定时任务和周期任务的方法
Jun 29 #Python
python循环定时中断执行某一段程序的实例
Jun 29 #Python
python顺序执行多个py文件的方法
Jun 29 #Python
You might like
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
谈谈PHP语法(2)
2006/10/09 PHP
php变量作用域的深入解析
2013/06/03 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
深入理解Vue Computed计算属性原理
2018/05/29 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python利用ansible分发处理任务
2015/08/04 Python
Python实现网站注册验证码生成类
2017/06/08 Python
Flask数据库迁移简单介绍
2017/10/24 Python
python文本数据处理学习笔记详解
2019/06/17 Python
python与js主要区别点总结
2020/09/13 Python
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
工厂保洁员岗位职责
2013/12/04 职场文书
入党自我评价范文
2014/02/02 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
六个一活动实施方案
2014/03/21 职场文书
《锄禾》教学反思
2014/04/08 职场文书
自主招生教师推荐信
2014/05/10 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书