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实现基于HTTP文件传输实例
Nov 08 Python
Python Web框架Flask中使用七牛云存储实例
Feb 08 Python
Python的re模块正则表达式操作
May 25 Python
Python中表示字符串的三种方法
Sep 06 Python
python实现超简单的视频对象提取功能
Jun 04 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
Python的几种主动结束程序方式
Nov 22 Python
django实现日志按日期分割
May 21 Python
python如何操作mysql
Aug 17 Python
如何使用Python调整图像大小
Sep 26 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 Python
用python修改excel表某一列内容的操作方法
Jun 11 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
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
php中关于换行的实例写法
2019/09/26 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
python 实现倒排索引的方法
2018/12/25 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
ajax是什么及其工作原理
2012/02/08 面试题
中职生自荐信
2013/10/13 职场文书
给分销商的致歉信
2014/01/14 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
河童之夏观后感
2015/06/11 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js