Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程
1.OSI七层协议
2.基于tcp协议的套接字通信
3.模拟ssh远程执行命令
4.tcp的粘包问题及解决方案
5.基于udp协议的套接字通信
6.socketserver
目标:开发一个C/S架构的软件
C/S:客户端----》server
B/S:浏览器----》server
server端:
1.位置必须固定/绑定一个固定的地址
2.对外一直提供服务,稳定运行
3.支持并发(让多个客户端感觉时被同时服务)
网络:
物理连接介质+互联网协议
ip+port可以标识全世界范围内独一无二的应用软件(基于网络通信协议)
任何的数据报应该分为报头+数据部分。其中报头是用来描述数据的,报头的长度是固定的
1 #client 2 import socket 3 #1.买手机 4 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp 流式=>SOCK_STREAM 5 #2.拨号 6 phone.connect(('127.0.0.1',8080)) #ip和端口应该是服务的IP和端口 7 #3.发收消息 8 while True: 9 msg=input('Please input send msg:').strip() 10 phone.send(msg.encode('utf-8')) #必须是bytes类型 11 12 data=phone.recv(1024) 13 print('服务端消息',data)
1 #Server 2 import socket 3 #1.买手机 4 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp 流式=>SOCK_STREAM 5 #2.插SIM卡 6 phone.bind(('127.0.0.1',8080)) #ip 应该是服务端该软件运行机器的IP地址,port(最好1024-65535) 7 #3.开机 8 phone.listen(5) #半连接池限制的是同一时刻的请求数 9 print('服务端启动。。。') 10 #4.等待电话连接的请求 11 conn,client_addr=phone.accept() #(套接字对象,存放客户端IP和端口的元组) 12 print('====>') 13 print(conn,client_addr) 14 #5.收发消息 15 while True: 16 data=conn.recv(1024) #1024单位是bytes, 代表最大接收1024 bytes 17 print('收到消息',data) 18 conn.send(data.upper()) 19 #6.挂电话 20 conn.close() 21 #conn.send() 22 #7关机 23 phone.close()
输出:
服务端启动。。。
1 #异常是程序发生错误的信号,一旦程序出错 2 try: 3 l=[1,2,3] 4 #if 100< len(l): 5 l[100] 6 print('aa') 7 except IndexError: 8 print('索引超出范围') 9 print('other code')
输出:
索引超出范围
other code
1 #client优化 2 import socket 3 #1.买手机 4 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp 流式=>SOCK_STREAM 5 #2.拨号 6 phone.connect(('127.0.0.1',8080)) #ip和端口应该是服务的IP和端口 7 #3.发收消息 8 while True: 9 msg=input('Please input send msg:').strip() 10 phone.send(msg.encode('utf-8')) #必须是bytes类型 11 12 data=phone.recv(1024) 13 print('服务端消息',data)
1 #server 优化 2 import socket 3 #1.买手机 4 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp 流式=>SOCK_STREAM 5 #2.插SIM卡 6 phone.bind(('127.0.0.1',8080)) #ip 应该是服务端该软件运行机器的IP地址,port(最好1024-65535) 7 #3.开机 8 phone.listen(5) #半连接池限制的是同一时刻的请求数 9 print('服务端启动。。。') 10 #4.等待电话连接的请求 11 conn,client_addr=phone.accept() #(套接字对象,存放客户端IP和端口的元组) 12 print('====>') 13 print(conn,client_addr) 14 #5.收发消息 15 while True: 16 try: 17 data=conn.recv(1024) #1024单位是bytes, 代表最大接收1024 bytes 18 if len(data) == 0:break # for linux/MAC 19 print('收到消息',data) 20 conn.send(data.upper()) 21 except ConnectionResetError: # for windows 22 break 23 #6.挂电话 24 conn.close() 25 #conn.send() 26 #7关机 27 phone.close()
1 import os 2 res=os.system('dir') 3 print('结果',res)
输出:
结果 0
1 import subprocess 2 import time 3 obj=subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) 4 #print (obj) 5 stdout=obj.stdout.read() 6 7 print(stdout.decode('gbk')) 8 stdout=obj.stdout.read() 9 time.sleep(0.1)
输出:
驱动器 C 中的卷是 OS
卷的序列号是 E0C1-2532
C:\Users\andy 的目录
2018/08/26 17:40 <DIR> .
2018/08/26 17:40 <DIR> ..
2018/03/20 22:28 <DIR> .anaconda
2017/07/29 20:27 <DIR> .android
2018/05/25 22:20 <DIR> .astropy
2018/03/21 00:17 <DIR> .conda
2018/05/05 21:53 43 .condarc
2018/08/26 09:37 <DIR> .ipynb_checkpoints
2018/03/20 22:27 <DIR> .ipython
2018/05/06 17:59 <DIR> .jupyter
2018/05/25 22:15 <DIR> .PyCharm2016.2
2018/08/16 23:10 <DIR> 3D Objects
2018/08/05 14:44 43 a.txt
2018/03/20 22:15 <DIR> Anaconda2
2018/05/06 16:12 <DIR> Anaconda3
2018/05/05 21:53 <DIR> AnacondaProjects
2018/08/05 15:21 63 b.json
2018/08/05 15:21 63 c.json
2018/08/16 23:10 <DIR> Contacts
2018/07/29 22:32 23,933 Day06.ipynb
1 import struct 2 #可以将整形打包成固定长度的bytes类型,可以基于网络传输 3 res=struct.pack('i',21215) 4 print(res,len(res)) 5 6 res1=struct.unpack('i',res) 7 print(res1[0])
输出:
b'\xdfR\x00\x00' 4
21215
转载于:https://www.cnblogs.com/dingchuan/p/9571621.html
Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver相关推荐
- Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...
Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: 这里 ...
- python网络通信效率_Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...
Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: 这里的客户端一般 ...
- 网络编程-网路七层协议图(2)之每一层对应的设备及功能(物理层、数据链路层、网络层、传输层、应用层...)
OSI七层协议在网络传输中扮演的角色及功能: 7.应用层--–电脑的各种数据 6.表示层 --– 处理用户信息的表示问题,如编码.数据格式转换和加密解密 5.会话层--–会话管理.会话流量控制.寻址. ...
- python(18):网络编程(七层协议+tcp/udp+socket编程)
Python作为最热门的语言,使我们每个人应该学习的一门技术! 本文针对初学者,我会用最容易的方式告诉你如何入门python! 一.基本网络概念 1.计算机之间如何进行联机 早期: 以太网:局域网与交 ...
- linux 网络7层模型,Linux网络编程——OSI七层模型、TCP/IP模型
OSI七层模型 开放式系统互连(Open System Interconnect),模型分为7层,从下往上依次为: 物理层: 数据链路层: 网络层: 传输层: 会话层: 表示层: 应用层: 记不住怎么 ...
- 网络编程-----OSI七层模型、TCP/IP模型
OSI网络七层模型以国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系为参考模型,不仅包括一系列抽象的术语或概念,也包括具体的协议. 每一层实现各自的功能和协议,并完成与相邻层的接 ...
- 网络编程之网络架构及其演变过程、互联网与互联网的组成、OSI七层协议、socket抽象层...
目录 网络架构及其演变过程 单机架构 CS架构 BS架构 BS架构和CS架构的区别 C/S架构的优缺点: B/S架构的优缺点: 互联网与互联网的组成 互联网的组成(教科书版) 互联网的组成(科普版) ...
- 网络编程 之osi七层协议
osi 七层协议 : 应用层: 应用层功能:规定应用程序的数据格式 传输层:tcp协议可靠传输 tcp协议不可靠传输 设定端口,端口即应用程序与网卡关联的编号. 网络层: ip协议 网络部分:标识子网 ...
- 【网络编程】一、如何记住OSI七层协议模型,看完还记不住的来打我。
学过计算机网络这门课的童鞋,一定都知道OSI七层协议模型. 那么现在闭上眼,能按顺序说出来的童鞋麻烦右上角点个赞,让博主看看有多少? 哇,0个赞,不是吧. 没关系,下面跟着博主的思路,看完本篇之后,我 ...
最新文章
- VSCode中屏蔽文件files.exclude和屏蔽文件搜索search.exclude
- linux at自动挂化,linux的at定时任务的使用
- 【tensorflow】tf.reshape函数说明:重塑张量
- IP地址与MAC地址的区别
- ul 原点显示_CSS+HTML ul li列表原点如何相连
- Bootstrap按钮的外观
- 用于图片切割,图片压缩,缩略图的生成(转到一个好东西)
- 【JZOJ6225】【20190618】计数
- excel 绘制箱图
- 键盘按键响应时间越快越好吗_按键响应、按键无冲、按键调速到底是怎么一回事?...
- OpenWrt搭建KMS服务(Vlmcsd)
- SQL数据库学习总结(一)
- 如何做好项目的培训工作?
- 关于js如何获取鼠标划过文本的内容与下标
- matlab不定式的除法,MATLAB练习作业(已做)2012
- RocketMQ报错:service not available now, maybe disk full
- 人才测评技术与应用【2】
- Python AutoCAD 注释
- javascript的ES6笔记整理
- NLS(National Language Support)