Python复习笔记(六)网络编程(udp/tcp)

一、网络-udp

1.1 ip地址

注意:

IP地址127.0.0.1 ~ 127.255.255.255 用于回路测试

1.2 端口(重点)

  • 端口是通过端口号来标记的,端口号只有整数,范围是从0~65535(2^16)
  • 知名端口:(0~1023)(>1024的随便用)
    • 80端口 分配给 HTTP 服务
    • 21端口 分配给 ftp 服务
  • 动态端口(1024~65535)

1.3 socket简介

1.31 不同电脑上进程之间如何通信

  • 利用 ip地址、协议、端口 就可以标识网络的进程了。
  • 进程间通信:运行的程序之间的数据共享。

1.32 创建socket

在Python中 使用socket 模块的函数 socket就可以完成:、

import socket

# AddressFamily: ipv4/ipv6; Type: udp/tcp
socket.socket(AddressFamily, Type)

说明:

函数 socket.socket 创建一个 socket,该函数带有两个参数:

  • Address Family:可以选择 AF_INET用于Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作常用 AF_INET

  • Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于TCP协议或者 SOCK_DGRAM(数据报套接字,主要用于UDP协议

创建一个 tcp socket (tcp套接字)

import socket

# AddressFamily: ipv4/ipv6; Type: udp/tcp

# 创建tcp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# ... 这里是使用套接字的功能 (省略)

# 不用的时候,关闭套接字
s.close()

创建一个 udp socket (udp 套接字)

import socket

# AddressFamily: ipv4/ipv6; Type: udp/tcp

# 创建tcp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# ... 这里是使用套接字的功能 (省略)

# 不用的时候,关闭套接字
s.close()

说明

  • 套接字使用流程
    1. 创建套接字
    2. 使用套接字收/发数据
    3. 关闭套接字

1.4 udp网络程序-发送、接收数据

1.41 udp网络程序-发送程序

import socket

# AddressFamily: ipv4/ipv6; Type: udp/tcp

# 1. 创建udp的套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 2. 准备接收方地址
# '192.168.43.74' 表示目标ip地址
# 8080表示目的端口
dest_addr = ('192.168.43.74', 8080) # 注意 是元组,ip是字符串,端口是数字

# 3. 从键盘获取数据
send_data = input("请输入要发送的数据:")


# 4. 发送数据到指定的电脑上的指定程序中
udp_socket.sendto(send_data.encode('utf-8'), dest_addr)

# 不用的时候,关闭套接字
udp_socket.close()

注意:可以用NetAssist测试

猜你喜欢

转载自www.cnblogs.com/douzujun/p/10425156.html