一.网络编程

1.网络编程基础

基于python的网络自动化运维系统 python 网络自动化_编程语言


基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_02


基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_03


基于python的网络自动化运维系统 python 网络自动化_数据_04


基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_05


基于python的网络自动化运维系统 python 网络自动化_编程语言_06


基于python的网络自动化运维系统 python 网络自动化_python_07


基于python的网络自动化运维系统 python 网络自动化_python_08


基于python的网络自动化运维系统 python 网络自动化_编程语言_09


基于python的网络自动化运维系统 python 网络自动化_python_10


基于python的网络自动化运维系统 python 网络自动化_socket_11

2.Socket编程-简介

基于python的网络自动化运维系统 python 网络自动化_数据_12


基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_13


基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_14


基于python的网络自动化运维系统 python 网络自动化_python_15

基于python的网络自动化运维系统 python 网络自动化_socket_16

3.Socket编程-udp编程

为看到效果先安装网络调试助手NetAssist.exe

基于python的网络自动化运维系统 python 网络自动化_编程语言_17

3.1使用socket发送数据

from socket import *
s = socket(AF_INET, SOCK_DGRAM) #创建套接字
addr = ('192.168.1.103', 8080) #准备目标方的地址,网络助手的地址
data = "Hello Wrold"

#发送数据时,python3需要将字符串转成byte
#encode(‘utf-8’)# 用utf-8对数据进行编码,获得bytes类型对象
#decode()反过来
s.sendto(data.encode(),addr)

s.close()

运行程序后效果如下:

基于python的网络自动化运维系统 python 网络自动化_数据_18

3.2使用socket接受数据

# 我们可以使用socket来接受网络助手发送过来的数据
from socket import *
s = socket(AF_INET, SOCK_DGRAM) #创建套接字
addr = ('192.168.1.103', 8080) #准备目标方的地址,网络助手的地址
data = "Hello World"
s.sendto(data.encode(),addr) # 发送给网络助手

#等待接收数据
#1024表示本次接收的最大字节数
redata = s.recvfrom(1024)
print(redata)

s.close()

运行程序后,在网络助手上给程序发送一条数据。效果如下:

基于python的网络自动化运维系统 python 网络自动化_编程语言_19


基于python的网络自动化运维系统 python 网络自动化_socket_20

3.3 绑定信息

  • 绑定信息:让一个进程可以使用固定的端口
  • 如果不绑定端口,我们每运行一次程序系统就会自动分配一个端口
from socket import *
s = socket(AF_INET, SOCK_DGRAM) #创建套接字
s.bind(('', 8788))   #绑定一个端口,ip地址和端⼝号,ip⼀般不⽤写
addr = ('192.168.1.103', 8080)   #准备接收方地址
data = input("请输入:")
s.sendto(data.encode(),addr)
redata = s.recvfrom(1024) #1024表示本次接收的最⼤字节数
print(redata)
s.close()

运行程序效果如下:

基于python的网络自动化运维系统 python 网络自动化_socket_21

3.4 聊天室

聊天室
from socket import *
import time
#1创建套接字
udpSocket = socket(AF_INET, SOCK_DGRAM)
bindAddr = ("",7088)
udpSocket.bind(bindAddr)#绑定
while True:
    #接收对方发送的数据
    recvData = udpSocket.recvfrom(1024)
    print('【%s】 %s.%s' %(time.ctime(),recvData[1],recvData[0].decode("GB2312"))) # 格式化输出获取到的数据
    a = input("请输入:")
    udpSocket.sendto(a.encode('GB2312'),('192.168.1.103',8080))
#5关闭套接字
udpSocket.close()

基于python的网络自动化运维系统 python 网络自动化_python_22

3.5 全双工聊天室

基于python的网络自动化运维系统 python 网络自动化_socket_23

#导入模块
import threading
import time
from socket import *


#实现接受消息
class Recive(threading.Thread):
    def run(self):
        udpsocket = socket(AF_INET,SOCK_DGRAM) #创建套接字
        udpsocket.bind(("", 8089))  # 绑定地址,bind参数为元组.注意是要给接受消息的进程绑定端口,这样网络助手才知道发送给谁。
        while True:
            recivedata = udpsocket.recvfrom(1024) #接受最大为1024字节的消息
            # 格式化输出接受到的数据
            print("{0}_{1}给你发送消息:{2}".format(recivedata[1][0],recivedata[1][1],recivedata[0].decode("GB2312")))


#实现发送消息
class Set(threading.Thread):
    def run(self):
        udpsocket = socket(AF_INET,SOCK_DGRAM)

        while True:
            a = input("请输入:")
            udpsocket.sendto(a.encode("GB2312"),("192.168.1.103",8080)) #发送消息给指定地址

if __name__ == "__main__":
    recive = Recive()
    set = Set()
    recive.start() #启动子线程1完成接受消息
    set.start() #启动子线程2来完成发送消息

运行结果如下:

基于python的网络自动化运维系统 python 网络自动化_编程语言_24

4.字符集

基于python的网络自动化运维系统 python 网络自动化_编程语言_25

5.wireshark抓包

基于python的网络自动化运维系统 python 网络自动化_python_26


基于python的网络自动化运维系统 python 网络自动化_socket_27


基于python的网络自动化运维系统 python 网络自动化_socket_28


基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_29

6.TFTP协议

基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_30


基于python的网络自动化运维系统 python 网络自动化_python_31


基于python的网络自动化运维系统 python 网络自动化_python_32


基于python的网络自动化运维系统 python 网络自动化_python_33


基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_34


基于python的网络自动化运维系统 python 网络自动化_数据_35

7.struct模块使用

基于python的网络自动化运维系统 python 网络自动化_数据_36


基于python的网络自动化运维系统 python 网络自动化_socket_37


基于python的网络自动化运维系统 python 网络自动化_python_38


基于python的网络自动化运维系统 python 网络自动化_python_39

8.udp广 播

基于python的网络自动化运维系统 python 网络自动化_socket_40


基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_41

9.数据包在网络中的通信过程

基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_42


基于python的网络自动化运维系统 python 网络自动化_编程语言_43


基于python的网络自动化运维系统 python 网络自动化_python_44


基于python的网络自动化运维系统 python 网络自动化_编程语言_45


基于python的网络自动化运维系统 python 网络自动化_编程语言_46


基于python的网络自动化运维系统 python 网络自动化_数据_47


基于python的网络自动化运维系统 python 网络自动化_socket_48


基于python的网络自动化运维系统 python 网络自动化_编程语言_49


基于python的网络自动化运维系统 python 网络自动化_socket_50


基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_51


基于python的网络自动化运维系统 python 网络自动化_python_52


基于python的网络自动化运维系统 python 网络自动化_编程语言_53

10.Socket编程-TCP编程

10.1 简介

基于python的网络自动化运维系统 python 网络自动化_python_54


基于python的网络自动化运维系统 python 网络自动化_编程语言_55


基于python的网络自动化运维系统 python 网络自动化_socket_56


基于python的网络自动化运维系统 python 网络自动化_基于python的网络自动化运维系统_57


基于python的网络自动化运维系统 python 网络自动化_数据_58


基于python的网络自动化运维系统 python 网络自动化_python_59


基于python的网络自动化运维系统 python 网络自动化_socket_60


基于python的网络自动化运维系统 python 网络自动化_编程语言_61

10.2单进程TCP模型

服务端代码:

from socket import *
serSocket = socket(AF_INET, SOCK_STREAM)
localAddr = ('',7788) #
serSocket.bind(localAddr)
serSocket.listen(5)
while True:
    newSocket,destAddr = serSocket.accept()
    try:
        while True:
            recvData = newSocket.recv(1024) # 接受客户端发送的请求
            newSocket.send(b'hello I am server ') # 给客户端发送数据
            if len(recvData)>0:
                print("接收到", str(destAddr),recvData)
            else: #如果收到的客户端数据长度为0,代表客户端已经调用close()下线
                print("%s-客户端已关闭" %str(destAddr))
                break
    finally:
        newSocket.close()
serSocket.close()

客服端代码:

from socket import *

clientSocket = socket(AF_INET,SOCK_STREAM)

serAddr = ('192.168.1.103',7788)
clientSocket.connect(serAddr) # 连接服务端

clientSocket.send(b'hello I am client') # 给服务端发送数据

recvData = clientSocket.recv(1024) # 接受服务端发送的数据

print("接受到的数据为:",recvData)

clientSocket.close()

10.3多进程TCP模型

基于python的网络自动化运维系统 python 网络自动化_编程语言_62


基于python的网络自动化运维系统 python 网络自动化_python_63

10.4多线程TCP模型

基于python的网络自动化运维系统 python 网络自动化_python_64


基于python的网络自动化运维系统 python 网络自动化_socket_65