Python中套接字实现服务端和客户端3-3

3 创建客户端的步骤

创建客户端的步骤如图5所示。

图5 创建客户端的步骤

从图5可以看出,对于客户端来说,首先创建套接字,之后通过创建的套接字去连接服务端,如果连接成功,则继续通过该套接字向服务端发送数据,最后关闭套接字。

3.1 创建套接字

客户端创建套接字的方法与服务端相同,代码如下所示。

s = socket.socket()

3.2 连接服务端

通过connect()方法连接服务端,该方法的格式如下所示。

socket.connect(address)

其中,参数address是服务器的信息,包括IP地址和端口号。连接服务器的代码如下所示。

SERVER = '192.168.147.128'
PORT = 12345s.connect((SERVER, PORT))

其中,SERVER表示服务器的IP地址,PORT表示服务器监听的端口号,最后将这两个变量组合成元组作为connect()方法的参数。如果不能成功连接服务器,connect()方法会间隔一段时间后再次尝试连接,此时代码会阻塞等待connect()的再次尝试,当尝试了一定次数后仍无法连接服务器,则connect()方法会抛出TimeoutError,即连接超时异常。如果成功连接了服务端,则代码会继续向下运行。

3.3 发送数据

成功连接了服务端之后,通过sendall()方法向服务端发送数据。该方法的格式如下所示。

socket.sendall(bytes[, flags])

其中,第一个参数bytes表示要发送的数据,该数据必须是字节类型;第二个参数flags是可选参数,表示指定了发送数据时的方式,默认值是0。通过sendall()方法发送数据的代码如下所示。

s.sendall(b'Hello Server!')

3.4 关闭套接字

在发送完数据之后,可以通过close()方法关闭套接字。

4 完整代码

4.1 服务端完整代码

import socketHOST = ''
PORT = 12345
WORDS = b'Hello Client!'s = socket.socket()
s.bind((HOST, PORT))
s.listen(1)
print('Server is starting...')conn, addr = s.accept()
print('Connected by', addr)data = conn.recv(1024)
print('Received:', data)conn.close()
s.close()    
print('Server closed!')

4.2 客户端完整代码

import socketSERVER = '192.168.147.128'
PORT = 12345s = socket.socket()
s.connect((SERVER, PORT))
s.sendall(b'Hello Server!')
s.close()

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

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

相关文章

【Mybatis源码】IDEA中Mybatis源码环境搭建

一、Mybatis源码源 在github中找到Mybatis源码地址:https://github.com/mybatis/mybatis-3 找到Mybatis git地址 二、IDEA导入Mybatis源码 点击Clone下载Mybatis源码 三、选择Mybatis分支 选择Mybatis分支,这里我选择的是3.4.x分支

【ChatGPT】无需代理使用ChatGPT

推荐一个无需代理、可以直接使用的、免费的、无需客户端的、稳定的ChatGPT终端 支持GPT-3.5和CPT-4 无需境外手机号 该工具比较稳定,断流情况很少 GPTDOS 注册地址:GPTDOS (使用我的邀请链接进行注册,双方都可以得到50000个toke…

Vue3 编译原理

文章目录 一、编译流程1. 解读入口文件 packgages/vue/index.ts2. compile函数的运行流程 二、AST 解析器1. ast 的生成2. 创建ast的根节点3. 解析子节点 parseChildren(关键)4. 解析模版元素 Element模版元素解析-举例分析 一、编译流程 1. 解读入口文…

嵌入式养成计划-33--数据库-sqlite3

七十一、 数据库 71.1 数据库基本概念 数据(Data) 能够输入计算机并能被计算机程序识别和处理的信息集合数据库 (Database)数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合 常用的数据库 大型数…

第二证券:5.5G时代将至 算力基建迎政策助力

昨日,A股全线低开,三大股指盘中均跌超1%,盘中冲高回落,午后逐渐止跌。到收盘,沪指跌0.44%报3096.92点,深成指微跌0.03%报10106.96点,创业板指跌0.26%报1998.61点,两市算计成交7700元…

【unity】制作一个角色的初始状态(左右跳二段跳)【2D横板动作游戏】

前言 hi~ 大家好!欢迎大家来到我的全新unity学习记录系列。现在我想在2d横板游戏中,实现一个角色的初始状态-闲置状态、移动状态、空中状态。并且是利用状态机进行实现的。 本系列是跟着视频教程走的,所写也是作者个人的学习记录笔记。如有错…

linux centos出现No space left on device解决方案

问题是因为系统磁盘空间不足 解决方法: 找到那个磁盘不足问题 df -lh 发现/dev/mapper/cl-root磁盘已用50G,有如下 解决方案: 1、如果是虚拟机可以通过分配空间使其空间增加 2、将其他不常用磁盘空间分配给cl-root如( /dev/mapper/cl-home &#…

unity 使用模拟器进行Profiler性能调试

这篇文章主要记录如何实现通过模拟器对打包的app游戏进行Profiler调试。主要记录一些比较重要的点。 准备工作 首先你要能够打包unity的安卓包,如果没有安装安卓组件,请先安装组件。 安装完成以后,会在unity的安装目录找到相应的SDK 这个…

嵌入式Linux裸机开发(五)中断管理

系列文章目录 文章目录 系列文章目录前言STM32 中断系统IMX6U中断控制8个中断GIC中断控制器GIC介绍中断IDGIC逻辑分块GIC协处理器 中断使能中断优先级 重点代码分析官方SDK函数start.S文件自行编写中断驱动文件 前言 最近在学习中发现,学Linux嵌入式不仅是对Linux的…

为Yolov7环境安装Cuba匹配的Pytorch

1. 查看Cuba版本 方法一 nvidia-smi 找到CUDA Version 方法二 Nvidia Control Panel > 系统信息 > 组件 > 2. 安装Cuba匹配版本的PyTorch https://pytorch.org/get-started/locally/这里使用conda安装 conda install pytorch torchvision torchaudio pytorch-cu…

JDK、JRE、JVM三者之间的关系

1.JDK 基本介绍 1) JDK 的全称 (Java Development Kit Java 开发工具包 ) JDK JRE java 的开发工具 [java, javac,javadoc,javap 等 ] 2) JDK 是提供给 Java 开发人员使用的,其中包含了 java 的开发工具,也包括了 JRE 。所以安装了 JDK ,就…

论文研读|Protecting Intellectual Property of Deep Neural Networks with Watermarking

目录 论文信息文章简介研究动机研究方法水印生成水印嵌入版权验证 实验结果有效性(Effectiveness)高效性(Converge Speed)保真度(Functionality)鲁棒性(Robustness)Anti-剪枝攻击&am…

SpringBoot源码分析-自动装配-实现原理

文章目录 SpringBoot自动装配前言介绍实现原理SpringBootApplicationEnableAutoConfigurationselectImports方法没有走?DeferredImportSelector源码分析设计目的 总结 SpringBoot自动装配 前言 什么是自动装配?用过Spring的应该都知道,虽然…

MySQL总结练习题

目录 1.准备数据表 2.表之间的关系 3.题目 3.1 取得每个部门最高薪水的人员名称 3.2 哪些人的薪水在部门的平均薪水之上 3.3 取得部门中(所有人的)平均的薪水等级 3.4 不准用组函数(Max ),取得最高薪水 3.5 取…

【数据结构】归并排序和计数排序(排序的总结)

目录 一,归并排序的递归 二,归并排序的非递归 三,计数排序 四,排序算法的综合分析 一,归并排序的递归 基本思想: 归并采用的是分治思想,是分治法的一个经典的运用。该算法先将原数据进行拆…

BUUCTF SimpleRev

分析 该文件为64位的ELF文件,运行在linux平台 使用IDA64打开 进入Decry函数 输入flag和成功的提示 看看如何才能成功拿到flag 这里比较text和str2,text是源代码就有的 那么str2应该就是我们输入的内容 先分析text的内容是什么 进入join函数 该函数…

SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池

前言 之前搭建SpringBoot项目工程,所使用的持久层框架不是Mybatis就是JPA,还没试过整合MybatisPlus框架并使用,原来也如此简单。在此简单记录一下在SpringBoot项目中,整合MybatisPlus持久层框架、Druid数据库连接池的过程。 一、…

Eclipse iceoryx(千字自传)

1 在固定时间内实现无任何限制的数据传输 在汽车automotive、机器人robotics和游戏gaming等领域,必须在系统的不同部分之间传输大量数据。使用Linux等操作系统时,必须使用进程间通信(IPC)机制传输数据。Eclipse iceoryx是一种中间件,它使用零拷贝Zero-Copy、共享内存Share…

【OSPF宣告——network命令与多区域配置实验案例】

个人名片: 🐼作者简介:一名大二在校生,喜欢编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:&#x1f5bc…

win10电脑插入耳机,右边耳机声音比左边小很多

最近使用笔记本看视频,发现插入耳机(插入式和头戴式)后,右边耳机声音比左边耳机声音小很多很多,几乎是一边很清晰,另一边什么都听不到。 将耳机插到别人电脑上测试耳机正常,那就是电脑的问题。试…