【python】网络编程socket TCP UDP

文章目录

  • 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.mfbz.cn/a/497708.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQLyog连接MySQL8.0+报错:错误码2058的解决方案

最近把mysql从5.7迁移到8.3.0发现连接不上 因为 MySQL 从 8.0 版本开始,新增了caching_sha2_password授权插件 技术博客 http://idea.coderyj.com/ 1.更换sqlyog 更新到13.1.3之后的版本 2.取消mysql8的加密授权机制 mysql> ALTER USER sqlyog% IDENTIFIED WIT…

ArcGIS制作风向频率玫瑰图

风玫瑰图是气象科学专业统计图表,用来统计某个地区一段时期内风向、风速发生频率,又分为“风向玫瑰图”和“风速玫瑰图” ;因图形似玫瑰花朵,故名。风玫瑰图对于涉及城市规划、环保、风力发电等领域有着重要的意义。风玫瑰图能够直观的显现某地区不同方位风向的频率特征,进…

边缘计算与云计算总结

一. EdgeGallery 简介 MEC场景下的EdgeGallery是让资源边缘化,实时完成移动网络边缘的业务处理,MEC场景下的EdgeGallery让开发者能更便捷地使用 5G 网络能力,让5G能力在边缘触手可及。 EdgeGallery是由华为、信通院、中国移动、中国联通、…

最优算法100例之11-和为S的两个数字

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个…

从小白-入门-进阶-高阶,四个阶段详细讲解单片机学习路线!

大家好,今天给大家介绍从小白-入门-进阶-高阶,四个阶段详细讲解单片机学习路线!,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 单片机学习路…

Jackson 2.x 系列【6】注解大全篇二

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 源码地址:https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 注解大全2.11 JsonValue2.12 JsonKey2.13 JsonAnySetter2.14 JsonAnyGetter2.15 …

【进程控制】进程程序替换的原理以及exec函数族

文章目录 替换原理exec函数族解释函数名解释参数 替换原理 在Linux中,进程的程序替换(Process Program Replacement)是指一个正在运行的进程使用exec函数族系统调用来加载并执行另一个程序的过程。这个新程序将替换掉原先正在执行的程序&…

VR全景赋能智慧农业,打造沉浸式种植体验平台

随着人口的增长,传统农业也正在面临着不一样的挑战,加上很多人对农业的固有印象,很少有年轻人愿意下到农田里,那么该如何提高产量、降低成本以及引导年轻人深刻感受现代农业成为了急需解决的问题。 随着城市化脚步的推进&#xff…

Codeforces Round 841 (Div. 2) C. Even Subarrays

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

Tomcat配置https

前言&#xff1a;本文内容为实操记录&#xff0c;仅供参考&#xff01; 一、证书 CA证书申请下载不赘述了。 二、上传证书 进入tomcat根目录&#xff0c;conf同级目录下创建cert文件夹&#xff0c;并将证书两个文件上传到该文件夹&#xff1b; 三、编辑conf/server.xml文件 ① …

0 决策树基础

目录 1 绪论 2 模型 3 决策树面试总结 1 绪论 决策树算法包括ID3、C4.5以及C5.0等&#xff0c;这些算法容易理解&#xff0c;适用各种数据&#xff0c;在解决各种问题时都有良好表现&#xff0c;尤其是以树模型为核心的各种集成算法&#xff0c;在各个行业和领域都有广泛的…

火车头通过关键词采集文章的原理

随着互联网信息的爆炸式增长&#xff0c;网站管理员和内容创作者需要不断更新和发布新的文章&#xff0c;以吸引更多的用户和提升网站的排名。而火车头作为一款智能文章采集工具&#xff0c;在这一过程中发挥着重要作用。本文将探讨火车头如何通过关键词采集文章&#xff0c;以…

新能源汽车驱动电机振动噪音分析

驱动电机示例图 驱动电机的噪声主要分为空气动力噪声、电磁噪声和机械噪声。其中在高速运转时空气动力噪声是主要噪声&#xff0c;中低速运转时电磁噪声为主要噪声。 1、空气动力噪声&#xff1a; 空气噪声主要由于风扇转动&#xff0c;使空气流动、撞击、摩擦而产生&#x…

109、Recent Advances in 3D Gaussian Splatting

简介 论文 对3D Gaussian Splatting的综述 质量提升 Mip-Splatting观察到&#xff0c;改变采样率&#xff0c;例如焦距&#xff0c;可以通过引入高频高斯类形伪影或强膨胀效应&#xff0c;极大地影响渲染图像的质量&#xff0c;因此Mip-Splatting将3D表示的频率限制在训练图…

win10微软拼音输入法 - bug - 在PATH变量为空的情况下,无法输入中文

文章目录 win10微软拼音输入法 - bug - 在PATH变量为空的情况下&#xff0c;无法输入中文概述笔记实验前提条件100%可以重现 - 无法使用win10拼音输入法输入中文替代的输入法软件备注END win10微软拼音输入法 - bug - 在PATH变量为空的情况下&#xff0c;无法输入中文 概述 在…

【Leetcode每日一题】模拟 - 提莫攻击(难度⭐)(42)

1. 题目解析 题目链接&#xff1a;495. 提莫攻击 2.算法原理 一、分情况讨论 要计算中毒的总时长&#xff0c;我们需要考虑时间点之间的差值&#xff0c;并根据这些差值来确定中毒的实际持续时间。 情况一&#xff1a;差值大于等于中毒时间 假设你的角色在时间点A中毒&#…

Jenkins拉取github项目相关问题

1.私有仓库问题 1.1如果你的仓库是私有的&#xff0c;21年起github就不支持账号密码的方式拉取代码了 那么就需要在github上面创建一个token (classic) 然后在Jenkins代码设置那里 然后应该就可以顺利打包了。 2.找不到pom&#xff08;多了一层文件夹&#xff09;问题 解…

关闭 I2C 时钟延展功能的使用介绍

1.问题发生的背景 某客户使用 STM32L452&#xff08;作为 I2C 设备&#xff09;开发光模块产品&#xff0c;在测试时发现&#xff0c;同一设备&#xff08;硬件及软件均未变动&#xff09;&#xff0c;当插入交换机时&#xff0c;可正常通信&#xff0c;但是当插入 FPGA 测试机…

公链角逐中突围,Solana 何以成为 Web3 世界的流量焦点?

在众多区块链公链中&#xff0c;Solana 凭借其创纪录的处理速度和极低的交易费用&#xff0c;成为了众多开发者和投资者的宠儿。就像网络上流行的那句话所说&#xff1a;“Why slow, when you can Solana?”&#xff0c;Solana 正以它的速度和强大的生态系统&#xff0c;重新定…

centos node puppeteer chrome报错问题

原因&#xff1a;缺少谷歌依赖包&#xff0c;安装以下即可 yum install atkyum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf…
最新文章