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多线程学习资料
Dec 19 Python
Python中给List添加元素的4种方法分享
Nov 28 Python
python编码最佳实践之总结
Feb 14 Python
python使用 HTMLTestRunner.py生成测试报告
Oct 20 Python
python opencv之分水岭算法示例
Feb 24 Python
Python排序算法之选择排序定义与用法示例
Apr 29 Python
儿童python练习实例
May 27 Python
python中的常量和变量代码详解
Jul 25 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
在Python中append以及extend返回None的例子
Jul 20 Python
python二元表达式用法
Dec 04 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的正则处理函数总结分析
2008/06/20 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
js 自定义的联动下拉框
2010/02/07 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
javascript数组去重小结
2016/03/07 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
python的unittest测试类代码实例
2017/12/07 Python
Python3生成手写体数字方法
2018/01/30 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
python进行TCP端口扫描的实现
2018/12/21 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
CSS3 实现图形下落动画效果
2020/11/13 HTML / CSS
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
新闻记者实习自我鉴定
2013/09/19 职场文书
远程研修随笔感言
2014/02/10 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
乡镇纠风工作实施方案
2014/03/22 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书