网络编程中套接字(socket)介绍(Python示例)
网络编程中套接字(socket)介绍(Python示例)
网络编程就是同一计算机的进程间或者不同的联网计算机之间的通信(交换数据)。
那么,这两台计算机之间用什么传输数据呢?首先你肯定先需要物理连接嘛。
在此基础上,只需要考虑如何编写数据传输程序。
套接字是一种抽象的概念,它表示一个端点,用于在网络中传输数据。套接字可以用于实现各种网络协议,如 TCP/IP、UDP 等。
在套接字中,有两个主要的概念:
服务器套接字(server socket):用于接收来自客户端的连接请求,并建立与客户端的连接。服务器套接字通常在一个特定的端口上等待客户端的连接。
客户端套接字(client socket):用于向服务器发送连接请求,并与服务器建立连接。客户端套接字通常在随机选择的端口上发起连接。
套接字通过使用 IP 地址和端口号来唯一标识其所在的计算机和端点。在网络编程中,程序员通常使用套接字来编写服务器和客户端程序,以实现数据的传输和通信。套接字在计算机网络、Internet 编程等领域中有着广泛的应用。
看似很麻烦,但实际上这点不用愁,因为和开发语言与操作系统已经提供了socket。即使对网络数据传输的原理不太熟悉,我们也能通过 socket 来编程。
【Python之socket 官方文档 https://docs.python.org/zh-cn/3/library/socket.html 】
服务器端Python源码文件:
import socket# 创建套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定地址和端口
server_address = ('localhost', 8888)
server_socket.bind(server_address)# 监听连接
server_socket.listen(5)print('等待客户端连接...')while True:# 接受连接client_socket, client_address = server_socket.accept()print('接受来自 {} 的连接'.format(client_address))try:# 发送数据message = '欢迎访问服务器!'client_socket.sendall(message.encode("utf8"))# 接收数据data = client_socket.recv(1024).decode('utf-8')print('收到来自客户端的数据:', data)finally:# 关闭连接client_socket.close()
客户端Python源码文件:
import socket# 创建套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 连接服务器
server_address = ('localhost', 8888)
client_socket.connect(server_address)try:# 接收数据data = client_socket.recv(1024)print('收到来自服务器的数据:', data.decode("utf8"))# 发送数据message = '这是客户端发送的数据'client_socket.sendall(message.encode("utf8"))finally:# 关闭套接字client_socket.close()
特别提示:在运行客户端代码之前,请确保服务器端代码已运行,并且已经监听连接。不要再在一个python的IDLE运行服务器端代码和客户端代码,否则会出现出现如下错误:
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
如何正确运行?
应打开一个IDLE,运行服务器代码。
再打开一个IDLE,运行客户端代码。
这样才是运行两个进程,进程间进行通信。
另外,防火墙的防护也可能造成上述错误。
相关文章:
网络编程中套接字(socket)介绍(Python示例)
网络编程中套接字(socket)介绍(Python示例) 网络编程就是同一计算机的进程间或者不同的联网计算机之间的通信(交换数据)。 那么,这两台计算机之间用什么传输数据呢?首先你肯定先需要…...
d3dcompiler_43.dll是什么文件?缺失d3dcompiler_43.dll文件修复与解决方法
今天我要和大家分享的是关于d3dcompiler_43.dll丢失的解决方法。我相信很多网友在使用电脑时都遇到过这个问题,那么接下来就让我们一起来探讨一下如何解决这个问题吧! 首先,让我们来了解一下d3dcompiler_43.dll文件的总体介绍。d3dcompiler_…...
YOLOv7改进:SPD-Conv,低分辨率图像和小物体涨点明显,涨点神器!!!
💡💡💡本文属于原创独家改进:SPD-Conv,优势:处理低分辨率图像和小物体等更困难的任务时性能更优 SPD-Conv | 亲测在多个数据集实现暴力涨点,尤其是小物体检测你值得拥有,强烈推荐,独家首发; 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c ✨…...
iris(golang)连接mysql数据库
连接mysql数据库 安装依赖 go get github.com/go-sql-driver/mysqlfunc LinkMySQL(){DB,_ : sql.Open("mysql","root:123456tcp(127.0.0.1:3306)/webgo_accout")//设置数据库最大连接数DB.SetConnMaxLifetime(100)//设置上数据库最大闲置连接数DB.SetMaxId…...
C现代方法(第1、2章)笔记
文章目录 C现代方法笔记(chapter1&2)序言0.1 C标准0.2 现代方法 第1章 C语言概述1.1 C语言的历史1.1.1 起源1.1.2 标准化1.1.3 基于C的语言 1.2 C语言的优缺点1.2.1 C语言的优点1.2.2 C语言的缺点1.2.3 高效地使用C语言 第2章 C语言基本概念2.1 编写…...
练[CISCN2019 华东南赛区]Double Secret
[CISCN2019 华东南赛区]Double Secret 文章目录 [CISCN2019 华东南赛区]Double Secret掌握知识解题思路关键paylaod 掌握知识 flask框架报错源码泄露,使用脚本进行RC4加解,ssti使用内置函数进行模板注入 解题思路 打开网站链接,页面就一…...
『Linux - gcc / g++』c程序翻译过程
文章目录 前言预处理 -E编译 -S汇编 -c链接动静态链接 前言 在计算机中的每一个程序是由代码变化而来的,但是事实上来说,用 c/C 写出的代码是不能被计算机识别的,其中必须经过一系列的过程才能使这个代码能成功的被计算机识别; …...
苹果遭遇安全危机,应用商店曝出不良APP,或影响iPhone的销售
据澎湃新闻报道指苹果的App Store被曝出不良APP位居下载榜前列,这对于向来强调APP严格审核的苹果来说是巨大的打击,更影响向来被认为信息安全遥遥领先的名声,对当下正热销的iPhone15或造成打击。 据了解被曝的软件以“学习XX字母”为命名&…...
docker 基本操作
一、docker 概述 Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。 Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自…...
ARM:使用汇编完成三个灯流水亮灭
1.汇编源代码 .text .global _start _start: 设置GPIOF寄存器的时钟使能LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0x1<<5)STR R1,[R0]设置GPIOE寄存器的时钟使能LDR R0,0X50000A28LDR R1,[R0] 从r0为起始地址的4字节数据取出放在R1ORR R1,R1,#(0x1<<4) 第4位设…...
嵌入式养成计划-33--数据库-sqlite3
七十一、 数据库 71.1 数据库基本概念 数据(Data) 能够输入计算机并能被计算机程序识别和处理的信息集合数据库 (Database)数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合 常用的数据库 大型数…...
什么是大数据运维?大数据运维的职责
大数据运维是指管理、监控和维护大规模数据存储和处理平台的过程。它包含了对数据存储、处理、传输等方面的管理和维护,同时负责确保数据的安全性、可靠性和高效性。 大数据运维的职责包括以下几个方面: 确保大数据平台的高可用性和稳定性,…...
解决方案:AI赋能工业生产3.0,从工业“制造”到“智造”
视频监控技术是一种既成熟又广泛应用于工业制造领域的先进技术。它可以通过安装各种摄像头和传感器来监测整个生产流程,包括原材料的采购、加工、装配和物流等环节,从而实现对生产过程的实时监控和管理,以及对异常事件的及时预警和响应。 在…...
Android KeyStore 秘钥导入
源码参考: https://android.googlesource.com/platform/cts//master/tests/tests/keystore/src/android/keystore/cts/ImportWrappedKeyTest.java 辅助源码参考: https://android.googlesource.com/platform/frameworks/base//master/core/java/android…...
TDengine+OpenVINO+AIxBoard,助力时序数据分类
时间序列数据分析在工业,能源,医疗,交通,金融,零售等多个领域都有广泛应用。其中时间序列数据分类是分析时序数据的常见任务之一。本文将通过一个具体的案例,介绍 Intel 团队如何使用 TDengine 作为基础软件…...
设计模式——16. 迭代器模式
1. 说明 迭代器模式(Iterator Pattern)是一种行为型设计模式,它用于提供一种访问聚合对象(如列表、数组、集合等)元素的统一接口,而不需要了解底层数据结构的具体实现。迭代器模式将遍历聚合对象的操作封装在一个独立的迭代器对象中,这样可以隔离遍历算法和数据结构,使…...
flink redis connector需要防止包冲突
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 <dependency><groupId>org.apache.bahir</groupId><artifactId...
socket can查看详细信息 命令 ip -details -statistics link show can0
ip -details -statistics link show can0 ip -details link show can0 ip -statistics link show can0 也可以像第一行那样结合使用...
打造虚拟企业展厅,开启商务活动新时代
引言: 虚拟企业展厅是一种基于数字技术的全新商务模式,正在改变传统商务活动的方式,它比传统的企业展厅更便利,也更能凸显企业优势,展示企业风貌。 一.虚拟企业展厅的好处 1.打破地域限制 传统的商务活动通常需要参…...
03黑马店评-添加商户缓存和商户类型的缓存到Redis
商户查询缓存 什么是缓存 实际开发过程中数据量可以达到几千万,缓存可以作为避震器防止过高的数据访问猛冲系统,避免系统内的操作线程无法及时处理信息而瘫痪 缓存(Cache)就是数据交换的缓冲区(储存临时数据的地方),我们俗称的"缓存"实际就是缓冲区内的数据(一般从…...
Code-Act框架:让AI通过代码生成与执行实现智能体“动手”能力
1. 项目概述:Code-Act,一个让AI“动手”的智能体框架最近在AI智能体这个圈子里,一个叫“Code-Act”的项目热度挺高。它不是一个具体的应用,而是一个框架,一个旨在解决当前AI智能体“眼高手低”问题的底层工具。简单来说…...
AutoHotkey V2扩展库:从脚本小子到全能开发者的进化之路
AutoHotkey V2扩展库:从脚本小子到全能开发者的进化之路 【免费下载链接】ahk2_lib 项目地址: https://gitcode.com/gh_mirrors/ah/ahk2_lib 你是否曾因AutoHotkey的功能局限而感到束手束脚?🤔 当简单的热键脚本无法满足复杂的业务需…...
WeChatMsg:突破性微信聊天记录管理工具 - 从数据碎片到情感记忆的革命
WeChatMsg:突破性微信聊天记录管理工具 - 从数据碎片到情感记忆的革命 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tr…...
Reddit内容获取引擎:从API调用到自动化管道的实战指南
1. 项目概述与核心价值 最近在折腾一个挺有意思的小玩意儿,叫 Cat-tj/reddit-reader 。乍一看名字,你可能觉得这又是一个简单的Reddit爬虫或者内容聚合器。但如果你深入了解一下,会发现它远不止于此。这个项目本质上是一个高度定制化、可编…...
RK3568网关实战:如何用1TOPS NPU在智慧农业里做实时虫情监测?
RK3568网关实战:如何用1TOPS NPU在智慧农业里做实时虫情监测? 在智慧农业的浪潮中,虫害监测一直是困扰农户的核心问题。传统依赖人工巡查的方式不仅效率低下,还容易错过最佳防治时机。而基于RK3568边缘计算网关的实时虫情监测方案…...
个人股票数据中枢构建指南:从多源聚合到Python量化分析
1. 项目概述:一个为个人投资者打造的股票数据中枢如果你和我一样,是个喜欢自己动手折腾、对市场数据有“洁癖”的个人投资者,那你肯定也经历过这样的烦恼:想分析一只股票,数据源五花八门,格式千奇百怪&…...
Beyond Compare 5 开源密钥生成器:逆向工程与授权机制的深度解析
Beyond Compare 5 开源密钥生成器:逆向工程与授权机制的深度解析 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在软件安全与逆向工程领域,授权验证机制始终是开发者与安…...
基于电容触控与伺服电机的互动雪人制作:嵌入式编程与物理计算实践
1. 项目概述与核心思路又到了可以折腾点有趣小玩意儿的季节。这次我想分享一个特别适合在室内营造节日气氛,又能把嵌入式编程和手工制作结合起来的项目:一个会跳舞的互动雪人。这个项目的核心很简单——你触摸雪人的帽子,它就会随着音乐扭动身…...
工业触控一体机选型与Linux应用开发全解析
1. 项目概述:当工业现场需要一块“聪明”的屏幕最近在跟进一个智慧工厂的MES(制造执行系统)终端升级项目,客户现场的老式工控机搭配笨重的显示器,不仅布线杂乱,操作响应慢,而且维护起来极其麻烦…...
开源法律知识库:结构化数据驱动法律科技应用
1. 项目概述:一个法律领域的开源知识库最近在整理一些法律相关的资料时,发现了一个挺有意思的开源项目,叫mileson/moticlaw。乍一看这个名字,可能会有点摸不着头脑,但如果你对法律科技或者开源社区有所关注,…...
