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 相关文章推荐
python在windows命令行下输出彩色文字的方法
Mar 19 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
python指定写入文件时的编码格式方法
Jun 07 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
Pytorch Tensor 输出为txt和mat格式方式
Jan 03 Python
Python字符串中删除特定字符的方法
Jan 15 Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
TensorFlow固化模型的实现操作
May 26 Python
python 如何设置守护进程
Oct 29 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
如何在Python中创建二叉树
Mar 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 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
js chrome浏览器判断代码
2010/03/28 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
python搭建简易服务器分析与实现
2012/12/15 Python
Python threading多线程编程实例
2014/09/18 Python
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
Python温度转换实例分析
2018/01/17 Python
Selenium的使用详解
2018/10/19 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
简历的自我评价
2014/02/03 职场文书
保密工作实施方案
2014/02/24 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
委托书的格式
2014/08/01 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
Python+Tkinter打造签名设计工具
2022/04/01 Python