Python网络编程:socket包的用法

news2024/10/6 9:08:05

持续补充

1 网络编程

  网络编程,主要用于两台或多台计算机之间的通信,也可以是同一台计算机内不同进程之间的通信。Socket套接字可以用来实现网络通信。关于Socket套接字,需要注意以下几点:

  • Socket是网络通信中应用层和传输层之间的一个抽象层。使用套接字,可以将网络通信的主机之间复杂的通信过程简单化,套接字可以为应用层提供一些接口,应用层使用套接字提供的接口可以实现网络中的主机之间的通信。
  • 套接字主要有目标IP、传输层使用的传输协议(TCP或UDP)、传输层使用的端口这3个重要参数。在TCP/IP协议中,“IP地址+TCP或UDP端口号”可以唯一标识网络通讯中的一个进程。所以“IP地址+端口号”就对应一个Socket。
  • 欲建立连接的两个进程各自有一个Socket来标识,那么这两个Socket组成的Socket pair就唯一标识一个连接。因此可以用Socket来描述网络连接的一对一关系。

下面举一个简单的例子来看看Socket套接字是如何实现进程之间数据交换的。具体如下:

import socket
import threading
class Socket_APP(threading.Thread):
    def __init__(self,port,content=''):
        self.port=port
        self.socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
        self.socket.bind(("localhost",port))
        self.msg=content
        threading.Thread.__init__(self)
    
    def run(self):
        if self.port==1000:
            self.socket.sendto(bytes(self.msg,encoding='utf-8'),
                             ('localhost',2000))
            print("端口{}发送的内容为:{}".format(self.port,self.msg))
            self.socket.close()
        if self.port==2000:
            msg,addr=self.socket.recvfrom(1024)
            msg=msg.decode('utf-8')
            print("端口{}收到的内容为:{}".format(self.port,msg))
            self.socket.close()
if __name__=="__main__":
    app1=Socket_APP(1000,'hello world')
    app2=Socket_APP(2000)
    app1.start()
    app2.start()

在该案例中,使用进程app1模拟发送进程(端口为1000),app2模拟接收进程(端口号为2000)。上述代码执行结果如下:
在这里插入图片描述
tips:关于socket套接字的其他内容,可以参考资料4,这里不赘述。

参考资料

  1. https://blog.csdn.net/m0_51683653/article/details/127679387
  2. https://www.runoob.com/python+/python-socket.html
  3. https://blog.csdn.net/qq_51654808/article/details/125221403
  4. 基于Python的套接字编程

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

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

相关文章

安装numpy

pip install numpy1.21.6 -i https://mirrors.aliyun.com/pypi/simple/ 最外面的python.exe 是默认版本 下载包----第二种方式

调用有道API实现图片翻译

调用有道API实现图片翻译 1.作者介绍2.关于理论方面的知识介绍3.调用有道API实现图片翻译实验3.1官方代码与结果3.2解码3.3换行输出3.4 示例展示 1.作者介绍 周慧龙,男,西安工程大学电子信息学院&#xff…

心电图机原理及电路超详细讲解

心电图机原理及电路超详细讲解 心电图主要器件导联单极导联和双极导联威尔逊中心端加压导联胸导联 心电图机的结构电路框图介绍输入部分过压保护电路高频滤波电路低压保护及缓冲放大器屏蔽驱动电路导联选择起搏脉冲抑制与定标电路肌电滤波、时间常数电路、封闭电路与电极异常检…

【OC底层_消息发送与转发机制原理】

文章目录 前言动态类型动态绑定为何为动态语言? 什么是消息传递选择子SELIMPIMP和SEL的关系 消息发送1. 快速查找objc_msgSend()的执行流程objc_msgSend()深基核心逻辑及其参数解析源码解析消息发送的快速查找总结:objc_msgSend(receiver, sel, …)对于b…

接口测试Post请求提交数据的四种类型

常见的post提交数据类型有四种: 第一种:application/json 这是最常见的json格式,也是非常友好的深受小伙伴喜欢的一种,如下 {“input1”:“xxx”,“input2”:“ooo”,“remember”:false} 第二种:application/x-www…

【MySQL实战】笔记

1、MySQL的基本架构组成 MySQL的基本架构组成包括以下几个部分: 连接器(Connection Manager):负责与客户端建立连接,并处理客户端发送的请求。连接器会验证客户端的身份、分配线程和缓存等资源,并将请求转…

pdf转excel怎么样格式不乱?这两个方法轻松转换!

PDF和Excel是广泛应用的文件格式,然而,将PDF转换为Excel时,常常面临格式混乱的问题。幸运的是,我们有记灵在线工具和Adobe Acrobat Pro软件这两个简单而有效的方法,可以帮助我们将PDF转换为Excel并保持格式整齐。本文将…

复旦微7045环境安装

Linux Petalinux 0.下载 更换下载源:https://blog.csdn.net/u012308586/article/details/102737950 更换中文:https://cloud.tencent.com/developer/article/2159346 1.配置 配置/bin/sh 由于 petalinux 用到的/bin/sh 命令都是 bash 的&#xff0c…

好用又强大的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点

作为一款强大易用的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。 控制台 控制台是一个 Halo 站点的后台管理系统,只有具有权限…

本周大新闻|visionOS SDK开放下载;Meta和三星停止芯片合作

本周XR大新闻,AR方面,visionOS 1.0系统和SDK发布;Meta和三星停止芯片合作,转而投向联发科;Karl Guttag评Vision Pro第二篇发布;Vision Pro眼球追踪细节。 VR方面,Vision Pro游戏空间边界为3米圆…

在CSDN的第1095天(3年),我收获了什么?

机缘 当初接触CSDN的时候是老师带进来的,那时候说人要有一个记录学习的习惯,可以记录很多东西,在后来看着老师的博客粉丝数和阅读数,哈哈哈,我心动了,于是就加了进来,记录点点滴滴。 于是开始…

使用Docker Swarm部署PXC+HAProxy高可用集群(三节点)

使用Docker Swarm部署PXCHAProxy高可用集群(三节点) 1. 部署规划 当前规划中,只启动一个HAProxy服务,主要用来做MySQL节点的负载均衡和代理,但是HAProxy可能会出现单点故障,后续需要启动多个HAProxy节点&…

【动态规划算法练习】day5

文章目录 一、309. 最佳买卖股票时机含冷冻期1.题目简介2.解题思路3.代码4.运行结果 二、714. 买卖股票的最佳时机含手续费1.题目简介2.解题思路3.代码4.运行结果 三、123. 买卖股票的最佳时机 III1.题目简介2.解题思路3.代码4.运行结果 四、188. 买卖股票的最佳时机 IV1.题目简…

ES6-Map()对象

Map是一个键值对的集合和Object类似,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。Map做为构造函数,可以通过全局对象获取到需要通过new操作创建实例对象。 map与Objec…

移动端适配方案

文章目录 像素设备像素(物理像素)设备独立像素(逻辑像素)CSS像素像素之间的关系 分辨率设备分辨率逻辑分辨率 移动端开发分类自适应响应式视口布局视口(layout viewport)视觉视口(visual layout)理想视口&a…

数据结构-哈希-位图与布隆过滤器

位图与布隆过滤器 一,位图题目分析位图设计位图代码经典题目 二,布隆过滤器布隆过滤器概念布隆过滤器的插入布隆过滤器的结构布隆过滤器总结经典题目 三,哈希切割 一,位图 题目分析 🚀给40亿个不重复的无符号整数&am…

【UE 从零开始制作坦克】11-坦克炮塔机枪

效果 步骤 1. 复制一份坦克炮弹的蓝图,重命名为“MachineGunBullets”,作为坦克炮塔机枪子弹的蓝图 2. 打开“MachineGunBullets”,由于美M2勃朗宁重机枪的口径是12.7毫米,这里取12毫米,也就是1.2cm,半径是…

Stream流中Map方法的使用

map函数的作用就是针对管道流中的每一个数据元素进行转换操作。 主要有三种用法 一、Stream管道流map的基础用法 将集合中的每个字符串&#xff0c;全部转化成大写&#xff01; 不使用流 List<String> list Arrays.asList("Monkey", "Lion", &…

你知道免费mp3格式转换器有哪些吗

小明是一个音乐爱好者&#xff0c;经常下载一些高质量的无损音频文件。但他发现有些音频文件格式并不支持他的播放器&#xff0c;这让他很苦恼。有一天&#xff0c;他听说了mp3格式转换器这个神奇的工具&#xff0c;可以将音频文件格式转换成mp3&#xff0c;从而方便他在各种设…

Jetpack Compose:构建现代Android应用的BottomNavigation

Jetpack Compose是Google推出的一种全新的声明式UI框架&#xff0c;它引领了Android开发的新风潮。在这篇博客中&#xff0c;我将详细介绍如何使用Jetpack Compose来构建一个具有底部导航栏&#xff08;BottomNavigation&#xff09;的现代Android应用。 首先&#xff0c;让我们…