Python学习,使用套接字(socket)实现UDP与TCP通信

本文介绍了Python中的套接字(socket)模块,通过实例讲解如何实现UDP和TCP通信。详细阐述了UDP的特点、发送和接收数据的流程,以及TCP的特性,包括面向连接、可靠传输等,并对比了TCP与UDP的主要区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开放式系统互联模型
官方的模型分为七层,但在实际使用中大多数公司会把这个模型分为四层或者五层。
在这里插入图片描述
而在python建立一个简单的主机间的通信,我们需要了解IP、UDP与TCP

IP
相比IP对大多数人来说都并不陌生,IP是什么,在Windows下,我们可以通过ipconfig来查看自己的IP等相关网络配置,而在linux下我们可以通过ifconfig来查看自己的IP等相关信息

Windows环境下的ipconfig
在这里插入图片描述
Linux环境下的ifconfig
在这里插入图片描述
IP协议有两种,一种是我们当前较为常用的IPv4(inet),另一种是还在测试阶段,但也有越来越多的地方开始使用的IPv6(inet6),因为IPv4地址位数为32位(4个字节)与2019年11月26日被消耗殆尽,所以IPv6地址位数为128位(16个字节)作为下一代IP地址,已经开始在生活中随处可见了。点击查看你是否支持访问IPv6
端口

IP和端口是密不可分的,如果你想要让设备通信,不仅需要知道对方的IP还需要知道对方的开放了那些端口。假设我们要去到朋友家,我们可以把知道对方的家庭住址当成知道了对方的家,知道了对方的端口号就知道了对方家的门在哪,如果我们只是知道对方的家,却找不到门,我们照样无法和对方正常通信。
端口可以分为两种

  • 系统保留的端口: 0~1023
  • 动态端口: 1024~65535

系统保留的端口我们无法去调用,而在系统保留的端口中,我们要记住几个常用的端口

  • HTTP协议端口:80
  • HTTPS协议端口:443

套接字
套接字(socket):在应用层与传输层直接工作,可以说是套接字将应用层与传输层连接到了一起。它是计算机直接互相通信的一种约定方式。几乎所有可以网络编程的语言都支持套接字,Python当然也不例外。socket是Python的内置模块之一,无需下载即可使用

socket方法常用属性

family(协议族):

  • AF_INET(IPv4)
  • AF_INET6(IPv6)

type(套接字类型):

  • SOCK_STREAM(TCP协议)
  • SOCK_DGRAM(UDP协议)

UDP

UDP特点

  • 无需和对方建立连接即可发送数据
  • 可以一对一,一对多,多对多等多种模式
  • 系统资源占用小 UDP是数据传输的一种方式,Python可以利用socket模块进行UDP的数据传输。

UDP使用流程较为简单,而且对服务器(提供服务的一方)与客户端(被服务的一方)的区分并不大。
1.创建套接字
2.使用套接字收\发数据
3.关闭套接字
在这里插入图片描述

UDP发送数据

发送数据默认只能发送ASCII编码的数据,且发送的数据必须是字节类型,所以我们可以用.encode()方法改变字节编码,在Windows系统中使用的是gbk的编码,如果你使用的电脑是Mac或者Linux系统,发送的数据使用utf-8则不会乱码

'''
学Python的过程中,往往因为没有资料或者没人指导从而导致自己不想学下去, 因此特意准备了个QQ群991032883,可以获取源码,解答,学习路线、开发工具等给大家免费使用! 
'''
import socket

def send_main():
    # family(协议族):AF_INET(IPv4) AF_INET6(IPv6) type(套接字类型) SOCK_STREAM(TCP协议) SOCK_DGRAM(UDP协议)
    udp_socket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值