python之网络编程

1.  网络基础知识

IP地址:32位二进制数字,常见的形式是192.168.0.X它的作用是在网络中定位到一个计算机

局域网使用的IP地址:192.168.0.0-192.168.255.255

172.16.0.0-172.31.255.255

10.0.0.0-10.255.255.255

特殊的IP地址:127.X.X.X     127.0.0.1本机

  1. X.X.X 多播地址,目标是局域网内特定的一组对象

其他的IP可以认为是互联网IP

 

端口地址:16位二进制数字,它的作用是在计算机中定位到一个联网的程序

编程需要的地址是:IP+端口

 

TCP通信:类似于打电话,只有接通了才能发数据,数据发完了还要断开连接,网络上大多数通信都是TCP

UDP通信:类似于发短信,需要就发,不用连接,不保证数据一定能送到,适用于要求速度,不要求精度的场合,例如网络电话,在线视频


2.  Socket简介

Python 提供了两个级别访问的网络服务。:

  • 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。
  • 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

  Socket函数

  Python 中,我们用 socket()函数来创建套接字,语法格式如下:

socket.socket([family[, type[, proto]]])

  参数:

  • family: 套接字家族可以使AF_UNIX或者AF_INET
  • type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAMSOCK_DGRAM
  • protocol: 一般不填默认为0.

  socket对象(内建)方法

  python之网络编程

  python之网络编程


3.  python Internet模块

  以下列出了 Python 网络编程的一些重要模块:

  python之网络编程


4.  练习一:TCP编程

  客户端(发起连接)----------------------------------------------------------服务器(接受连接,提供服务)

  客户端

#TCP客户端
#demo5.py 服务器ip127.0.0.1 服务器端口6666
import socket
import sys
s=socket.socket()
ip=sys.argv[1]
port=int(sys.argv[2])
s.connect((ip,port))                #连服务器
while 1:
    sdata=input("客户端:")
    s.send(sdata.encode())
    if sdata=="exit":
        break
    rdata=s.recv(1024).decode()
    print(f"服务器:{rdata}")
   
s.close()

  服务端

#TCP服务器
import socket
s=socket.socket()
s.bind(("0.0.0.0",6666))    #绑定地址
s.listen(5)                 #监听数量  开启监听
sock,addr=s.accept()        #接收连接
while 1:
    rdata=sock.recv(1024).decode()
    print(f"客户端:{rdata}")
    if rdata=="exit":
        break
    sdata=input("服务器:")
    sock.send(sdata.encode())
sock.close()                #关闭通信管道
s.close()                   #关闭监听管道

 python之网络编程

  exit必须客户端进行才有用


5.  练习二:UDP编程 

  服务端

#UDP服务器
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('0.0.0.0',9999))
print("服务器已启动")

while 1:
    rdata,addr=s.recvfrom(1024)
    print(f"客户端{addr}:{rdata.decode()}")
    if rdata==b"exit":
        break
    sdata=input("服务器:")
    s.sendto(sdata.encode(),addr)
s.close()

  客户端

#UDP客户端
import socket
import sys
ip=sys.argv[1]
port=int(sys.argv[2])
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
print("客户端已启动")
while 1:
    sdata=input("客户端:")
    s.sendto(sdata.encode(),(ip,port))
    if sdata=="exit":
        break
    rdata=s.recv(1024)
    print("服务器:",rdata.decode())
s.close()

  python之网络编程

  python之网络编程

  python之网络编程

  在两个电脑在同一局域网时,可以进行连接

 

python之网络编程python之网络编程 LKmnbZ 发布了46 篇原创文章 · 获赞 58 · 访问量 2123 私信 关注
上一篇:modbus测试工具


下一篇:jmeter提取器(css、xpath、正则表达式)