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实现带声音的摩斯码翻译实现方法
May 20 Python
在Python的Django框架中更新数据库数据的方法
Jul 17 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
python生成器,可迭代对象,迭代器区别和联系
Feb 04 Python
对python多线程与global变量详解
Nov 09 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
Python socket模块实现的udp通信功能示例
Apr 10 Python
python实现的config文件读写功能示例
Sep 24 Python
python爬虫实例之获取动漫截图
May 31 Python
为什么相对PHP黑python的更少
Jun 21 Python
Python生成器generator原理及用法解析
Jul 20 Python
java关于string最常出现的面试题整理
Jan 18 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制作静态网站的模板框架
2006/10/09 PHP
PHP中常用数组处理方法实例分析
2008/08/30 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
2017/03/15 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
js面试题之异步问题的深入理解
2020/09/20 Javascript
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
大专生工程监理求职信
2013/10/04 职场文书
大学生思想汇报范文
2013/12/31 职场文书
2014年导购员工作总结
2014/11/18 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
大一学生个人总结
2015/02/15 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
python状态机transitions库详解
2021/06/02 Python
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python
Java 多线程协作作业之信号同步
2022/05/11 Java/Android