【python】网络编程socket TCP UDP

news2024/11/15 12:34:55

文章目录

  • socket
    • 常用方法
  • TCP
    • 客户端
    • 服务器
  • UDP
    • 客户端
    • 服务器

网络编程就是实现两台计算机的通信

互联网协议族 即通用标准协议,任何私有网络只要支持这个协议,就可以接入互联网。

socket

socke模块的socket()函数

import socket

sock = socket.socket(Address Family, type)

参数说明:

  1. Address Family:
    指定套接字家族(Address Family),可以是以下之一:
    • socket.AF_INET:IPv4 地址族。
    • socket.AF_INET6:IPv6 地址族。
    • socket.AF_UNIX:UNIX 地址族,用于在同一台机器上的进程间通信。
  2. type:
    指定套接字类型,可以是以下之一:
    • socket.SOCK_STREAM:流式套接字,提供面向连接的、可靠的字节流服务,使用 TCP 协议。
    • socket.SOCK_DGRAM:数据报套接字,提供无连接的数据报服务,使用 UDP 协议。
    • socket.SOCK_RAW:原始套接字,允许您访问底层协议。
  3. proto:
    指定协议编号,通常可以省略。如果 type 参数提供了协议类型,那么这个参数通常设置为 0。

常用方法

  1. bind(address):
    将套接字绑定到指定的地址。address 参数是一个元组,包含主机名和端口号。
  2. listen(backlog):
    开始TCP监听传入的连接请求。backlog 参数指定在拒绝连接之前,可以挂起的最大连接数量。该值至少为1,大部分应用程序为5就可以了。
  3. accept():
    接受传入的连接【阻塞式】,返回一个新的套接字对象和连接的地址。通过这个套接字对象,您可以与客户端进行通信,发送和接收数据。这通常在服务器端使用。
  4. connect(address):
    连接到指定的地址。address 参数是一个元组,包含远程主机的主机名和端口号。连接出错,返回socket.error
  5. send(data):TCP
    发送数据到已连接的套接字。data 参数是要发送的字节串。返回值是发送的字节数量。
  6. sendto(data, address):UDP
    这个方法用于向指定的地址发送数据。data 参数是要发送的字节串,address 参数是一个元组,包含目标主机的地址和端口号。
  7. recv(bufsize):TCP
    接收套接字上的数据。bufsize 参数指定要接收的最大字节数。返回值是字符串形式的数据
  8. recvfrom(bufsize):UDP
    这个方法用于从套接字接收数据,并返回一个包含接收的数据和发送方地址的元组。bufsize 参数指定要接收的最大字节数。返回值是(data,address)
  9. close():
    关闭套接字连接。
  10. sendall(data):
    完整地发送所有数据到已连接的套接字,确保所有数据都被发送。与 send() 方法不同,它会一直发送直到所有数据发送完毕。
  11. recv_into(buffer[, nbytes]):
    将数据读取到一个缓冲区中。buffer 参数是一个可写的字节数组或可写的类似缓冲区的对象。
  12. setsockopt(level, optname, value):
    设置给定套接字选项的值。level 参数指定选项的级别,optname 指定选项的名称,value 指定要设置的值。

TCP data是字节串,不是字符串
需要先将字符串转换为字节串,然后再传递给 send() 方法。可以通过调用字符串对象的 encode() 方法将字符串编码为字节串

socket.send("hi".encode())

接收的字节串转换为字符串打印,decode() 方法将字符串编码为字节串

socket.recv().decode()

TCP

在这里插入图片描述

服务端
客户端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1552796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络套接字补充——UDP网络编程

五、UDP网络编程 ​ 1.对于服务器使用智能指针维护生命周期;2.创建UDP套接字;3.绑定端口号,包括设置服务器端口号和IP地址,端口号一般是2字节使用uint16_t,而IP地址用户习惯使用点分十进制格式所以传入的是string类型…

<深度学习入门学习笔记P1>——《深度学习》

一、深度学习概述 1.深度学习入门概念及介绍 注: (1)感知机是深度学习网络算法的起源,神经网络是深度学习算法的中心。 (2)损失函数和梯度下降是用来对模型优化和训练的一种方式。 (3&#xff…

AugmentedReality之路-显示隐藏AR坐标原点(3)

本文介绍如何显示/隐藏坐标原点,分析AR坐标原点跟手机的位置关系 1、AR坐标原点在哪里 当我们通过AugmentedReality的StartARSession函数打开AR相机的那一刻,相机所在的位置就是坐标原点。 2、创建指示箭头资产 1.在Content/Arrow目录创建1个Actor类…

NanoMQ的安装与部署

本文使用docker进行安装,因此安装之前需要已经安装了docker 拉取镜像 docker pull emqx/nanomq:latest 相关配置及密码认证 创建目录/usr/local/nanomq/conf以及配置文件nanomq.conf、pwd.conf # # # # MQTT Broker # # mqtt {property_size 32max_packet_siz…

|行业洞察·趋势报告|《2024旅游度假市场简析报告-17页》

报告的主要内容解读: 居民收入提高推动旅游业发展:报告指出,随着人均GDP的提升,居民的消费能力增强,旅游需求从传统的观光游向休闲、度假游转变,国内人均旅游消费持续增加。 政府政策促进旅游市场复苏&…

对象内存布局

对象头 对象标记Mark Word 所以New一个对象 没有其他信息 就是16字节 Object obj = new Object();

设计模式之原型模式讲解

原型模式本身就是一种很简单的模式,在Java当中,由于内置了Cloneable 接口,就使得原型模式在Java中的实现变得非常简单。UML图如下: 我们来举一个生成新员工的例子来帮助大家理解。 import java.util.Date; public class Employee…

Git--08--Git分支合并操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Git分支合并操作案例流程客户端:GitExtensions操作步骤:A操作步骤:B操作步骤:C操作步骤:D操作步骤&#…

Ubuntu20.04安装OpenCV并在vsCode中配置

1. 安装OpenCV 1.1 安装准备: 1.1.1 安装cmake sudo apt-get install cmake 1.1.2 依赖环境 sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev sudo apt-get install libgtk2.0-d…

opencv如何利用掩码将两张图合成一张图

最近在学opencv, 初学者。 里面有提到如何将两张图合成一张图, 提供了两个方法 一种是直接通过图片透明度权重进行融合 img1 cv.imread(ml.png) img2 cv.imread(opencv-logo.png) dst cv.addWeighted(img1,0.7,img2,0.3,0) cv.imshow(dst,dst) cv.…

iOS —— 初识KVO

iOS —— 初始KVO KVO的基础1. KVO概念2. KVO使用步骤注册KVO监听实现KVO监听销毁KVO监听 3. KVO基本用法4. KVO传值禁止KVO的方法 注意事项: KVO的基础 1. KVO概念 KVO是一种开发模式,它的全称是Key-Value Observing (观察者模式) 是苹果Fundation框架…

MySQL ② —— 索引原理

1. 索引 1.1 分类 主键索引、唯一索引、普通索引、组合索引、以及全文索引 主键索引 非空唯一索引,一个表只有一个主键索引;在 innodb 中,主键索引的 B 树包含表数据信息。 唯一索引 不可以出现相同的值,可以有 NULL 值。 …

3.28学习总结

java 封装 封装体现了java的面向对象的特点,用户不用知道程序是如何运行的,只用按照所给的格式输入参数,便可得到对应的结果. 一个完整的封装需要每个实例变量都用private来修饰并拥有相应的public getter和setter方法. 代码 public class girl {private int age;public st…

TABLE使用篇之奇门异术

table使用时候有时候会有下面界面 hover提示框,用element的el-popover可以显示该操作,但是会发现 取消操作的时候,el-popover不会自动消失,虽然失去焦点改框会自动消失,但是看起来对用户不是很友好 解决办法&#xff…

CDH集群hive初始化元数据库失败

oracle数据库操作: 报错如下:命令 (Validate Hive Metastore schema (237)) 已失败 截图如下: 后台日志部分摘录: WARNING: Use “yarn jar” to launch YARN applications. SLF4J: Class path contains multiple SLF4J binding…

Vite 为什么比 Webpack 快?

目录 1. Webpack 的构建原理 2. Script 的模块化(主流浏览器对 ES Modules 的支持) 3. Webpack vs Vite 开发模式的差异 对 ES Modules 的支持 底层语言的差异 热更新的处理 1. Webpack 的构建原理 前端之所以需要类似于 Webpack 这样的构建工具&…

vue纯前端过滤嵌套数据,通过关键字搜索过滤嵌套数据

1.过滤效果: 2. cardList 数据源: [ { "id": 4, "createTime": "2024-03-28 02:47:18", "updateTime": "2024-03-28 02:47:18", "uniqueId": "…

前端学习-CSS基础-Day3

一、CSS三大特性 1.1层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题 层叠性原则: 1.样式冲突,遵循的原则是就近原则,哪个样式离结构近&a…

React系列之合成事件与事件处理机制

文章目录 React事件处理机制原生事件的事件机制事件代理(事件委托) 合成事件使用合成事件目的合成事件原生事件区别事件池 原生事件和React事件的执行顺序e.stopPropagation() React17事件机制的修改 React事件处理机制 react 事件机制基本理解&#xf…

Maven配置国内镜像-阿里云仓库镜像

使用自己安装maven环境时&#xff1a; 打开解压目录下conf/settings.xml文件 使用Idea自带的Maven时&#xff1a; 打开Idea安装路径\plugins\maven\lib\maven3\conf\settings.xml文件 在mirrors节点中加入如下配置&#xff1a; <!-- 加入如下mirror节点 使用国内阿里云仓…