今日内容: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可以标识全世界范围内独一无二的应用软件(基于网络通信协议)
    任何的数据报应该分为报头+数据部分。其中报头是用来描述数据的,报头的长度是固定的

 #client
import socket
#1.买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp 流式=>SOCK_STREAM
#2.拨号
phone.connect(('127.0.0.1',8080)) #ip和端口应该是服务的IP和端口
#3.发收消息
while True:
msg=input('Please input send msg:').strip()
phone.send(msg.encode('utf-8')) #必须是bytes类型 data=phone.recv(1024)
print('服务端消息',data)
 #Server
import socket
#1.买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp 流式=>SOCK_STREAM
#2.插SIM卡
phone.bind(('127.0.0.1',8080)) #ip 应该是服务端该软件运行机器的IP地址,port(最好1024-65535)
#3.开机
phone.listen(5) #半连接池限制的是同一时刻的请求数
print('服务端启动。。。')
#4.等待电话连接的请求
conn,client_addr=phone.accept() #(套接字对象,存放客户端IP和端口的元组)
print('====>')
print(conn,client_addr)
#5.收发消息
while True:
data=conn.recv(1024) #1024单位是bytes, 代表最大接收1024 bytes
print('收到消息',data)
conn.send(data.upper())
#6.挂电话
conn.close()
#conn.send()
#7关机
phone.close()

输出:
服务端启动。。。

 #异常是程序发生错误的信号,一旦程序出错
try:
l=[1,2,3]
#if 100< len(l):
l[100]
print('aa')
except IndexError:
print('索引超出范围')
print('other code')

输出:
索引超出范围
other code

 #client优化
import socket
#1.买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp 流式=>SOCK_STREAM
#2.拨号
phone.connect(('127.0.0.1',8080)) #ip和端口应该是服务的IP和端口
#3.发收消息
while True:
msg=input('Please input send msg:').strip()
phone.send(msg.encode('utf-8')) #必须是bytes类型 data=phone.recv(1024)
print('服务端消息',data)
 #server 优化
import socket
#1.买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp 流式=>SOCK_STREAM
#2.插SIM卡
phone.bind(('127.0.0.1',8080)) #ip 应该是服务端该软件运行机器的IP地址,port(最好1024-65535)
#3.开机
phone.listen(5) #半连接池限制的是同一时刻的请求数
print('服务端启动。。。')
#4.等待电话连接的请求
conn,client_addr=phone.accept() #(套接字对象,存放客户端IP和端口的元组)
print('====>')
print(conn,client_addr)
#5.收发消息
while True:
try:
data=conn.recv(1024) #1024单位是bytes, 代表最大接收1024 bytes
if len(data) == 0:break # for linux/MAC
print('收到消息',data)
conn.send(data.upper())
except ConnectionResetError: # for windows
break
#6.挂电话
conn.close()
#conn.send()
#7关机
phone.close()
 import os
res=os.system('dir')
print('结果',res)

输出:
结果 0

 import subprocess
import time
obj=subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
#print (obj)
stdout=obj.stdout.read() print(stdout.decode('gbk'))
stdout=obj.stdout.read()
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

 import struct
#可以将整形打包成固定长度的bytes类型,可以基于网络传输
res=struct.pack('i',21215)
print(res,len(res)) res1=struct.unpack('i',res)
print(res1[0])

输出:
b'\xdfR\x00\x00' 4
21215

Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver的更多相关文章

  1. 8.6 day27 网络编程 osi七层协议 Time模块补充知识 TCP协议

    Time模块补充知识 date和datetime区别是什么? date 就是年月日 datetime就是年月时时分秒 以下代码为什么会报错? import json from datetime imp ...

  2. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器    定义:       ...

  3. 网络编程-osi七层

    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...

  4. 软件开发架构与网络之OSI七层协议(五层)

    本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...

  5. 网络之OSI七层协议模型、TCP/IP四层模型

    13.OSI七层模型各层分别有哪些协议及它们的功能 在互联网中实际使用的是TCP/IP参考模型.实际存在的协议主要包括在:物理层.数据链路层.网络层.传输层和应用层.各协议也分别对应这5个层次而已. ...

  6. day28——C/S与B/S架构、网络通信原理、osi七层协议、UDP、TCP协议、TCP的三次握手与四次挥手

    day28 C/S B/S架构 C:client 客户端 B:browse浏览器 S:server 服务端 C/S C/S架构:基于客户端与服务端之间的通信 ​ QQ.游戏.皮皮虾 ​ 优点:个性化设 ...

  7. python网络编程-OSI七层模型详解

    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...

  8. Java网络编程:OSI七层模型和TCP/IP模型介绍

    OSI(Open System Interconnection),开放式系统互联参考模型 .是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为了7层.每一层都有相关.相对应的物理设备,比如常规的路 ...

  9. CSIC_716_20191204【网络编程 OSI 七层结构】

     软件开发架构 C/S架构: Client: 客户端 Server: 服务端 比如: 微信客户端.QQ客户端等... 优点: - 软件的使用稳定 - 节省网络资源 缺点: - 安装麻烦,用户体验差 - ...

随机推荐

  1. 整合Kafka到Spark Streaming——代码示例和挑战

    作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管.本文,Michael详细的演示了如 ...

  2. Jquery EasyUI弹出窗体

    $("#btnCreate").click(function () { $("#modalwindow").html("<iframe widt ...

  3. 【转】Android7.0版本以上的手机Eclipse无法打出LogCat

    本来想用Eclipse连下手机看下log的,结果LogCat没打出来任何信息,起初怀疑是我的DDMS有问题,结果连了下我老大的手机,完美打出log,看了下Android系统,老大的是6.0的,我的7. ...

  4. C++复习:位运算

    与          a&b :    1010&1100=1000  或          a|b  :  1010|1100=1110 异或       a^b :     101 ...

  5. 【BZOJ3671】[Noi2014]随机数生成器 暴力

    [BZOJ3535][Noi2014]随机数生成器 Description Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第2行包含三个 ...

  6. 使用Scrapy采集

    1.有些站点通过robot协议,防止scrapy爬取,就会出现如下问题: DEBUG: Forbidden by robots.txt: <GET http://baike.baidu.com/ ...

  7. CSS定位细节

    记住此三句话,很好的解决了关于浮动方面的问题: 1.浮动的元素对于没有设置浮动的元素来说是不存在的,浮动的元素将会覆盖没有浮动的元素 如图:先让d1浮动在left ,d2位置不浮动,d1覆盖了d2之上 ...

  8. On Using Very Large Target Vocabulary for Neural Machine Translation Candidate Sampling Sampled Softmax

    [softmax分类器的加速器] https://www.tensorflow.org/api_docs/python/tf/nn/sampled_softmax_loss This is a fas ...

  9. me12里更改信息记录的净价和有效价格,以及信息记录的条件价格

    转自 http://blog.csdn.net/zeewjj/article/details/7941525REPORT ztest. DATA:l_kbetr LIKE konp-kbetr.l_k ...

  10. Java for LeetCode 097 Interleaving String 【HARD】

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example, Given: s1 ...