Python网络编程入门

news/2025/3/25 23:27:52/

一.Socket

简称套接字,是进程之间通信的一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间要想进行网络通信需要Socket,Socket好比数据的搬运工~

2个进程之间通过Socket进行相互通讯,就必须有服务端和客户端。

  • 服务端:等待其他进程的连接,可接受发来的消息、可以回复消息~
  • 客户端: 主动连接服务端,可以发送消息,可以接受回复~

一个服务端可以接受多个客户端发来的消息,如下图:

 

二.服务端开发

1.导入socket包

2.创建一个Socket对象

python">socket_server = socket.socket()

3.绑定IP地址和端口

python">socket_server.bind(('localhost', 1319))

端口号自定义,但别和nodejs、Jupyter、MySQL或者Tomcat这些重合了就行~ 

4.监听端口

python">socket_server.listen(1)

函数内参数设置为1,表示同时最多接受1个客户端的连接。 

5.等待客户端连接

这里使用accept方法,这是一个阻塞方法:如果没有连接,则后续的代码皆不执行~

python">conn, addr = socket_server.accept()

accept返回的是一个二元元组:

  • conn:客户端和服务端的连接对象
  • address:客户端的地址信息

测试连接情况:

python">print(f"Connected by: {addr}")

6.接受客户端信息

python">data:str = conn.recv(1024).decode('utf-8')
#类型注释,字符串型

recv接受的参数是缓冲区大小,这里一般给1024即可。此外其返回值为一个字节数组也即bytes对象,需要decode方法通过UTF-8编码,将字节数组转换为字符串对象~

python">print(f"message:{data}")

7.回复消息

python">msg=input("回复消息:").encode('utf-8')
conn.send(msg)

 input键入的是字符串对象,因此需要先编码为字节数组~

8.关闭链接

python">conn.close()
socket_server.close()

三.客户端开发

总的来说异曲同工,甚至更为简易:

python">import socket
socket_client= socket.socket()
socket_client.connect(('127.0.0.1', 1325))  #就是localhost,别犹豫
socket_client.send(bytes('Hello, client!', 'utf-8'))
recv_data=socket_client.recv(1024)
print(f"回复的消息是:{recv_data.decode('utf-8')}")
socket_client.close()

四.测试

将两个py文件都运行起来:

服务端已经收到了客户端发来的消息了,这时我们回复以后,客户端亦可正常收到~


http://www.ppmy.cn/news/1583072.html

相关文章

常见框架漏洞--Spring

Spring Data Rest 远程命令执⾏命令(CVE-2017-8046) 环境搭建 漏洞利用 1. 访问 http://your-ip:8080/customers/1 2.然后抓取数据包,使⽤PATCH请求来修改 [{ "op": "replace" , "path": "T(java.lang.Runtime).getRuntime().…

Apache Hive:基于Hadoop的分布式数据仓库

Apache Hive 是一个基于 Apache Hadoop 构建的开源分布式数据仓库系统,支持使用 SQL 执行 PB 级大规模数据分析与查询。 主要功能 Apache Hive 提供的主要功能如下。 HiveServer2 HiveServer2 服务用于支持接收客户端连接和查询请求。 HiveServer2 支持多客户端…

钞票准备好了吗?鸿蒙电脑 5 月见

3月20日,在华为 Pura 先锋盛典及鸿蒙智行新品发布会上,华为常务董事、终端BG董事长、智能汽车解决方案BU董事长余承东表示,华为终端全面进入鸿蒙时代,今年5月将推出鸿蒙电脑。 在3月20日的华为Pura先锋盛典及鸿蒙智行新品发布会上…

新书速览|云原生Kubernetes自动化运维实践

《云原生Kubernetes自动化运维实践》 本书内容: 《云原生Kubernetes自动化运维实践》以一名大型企业集群运维工程师的实战经验为基础,全面系统地阐述Kubernetes(K8s)在自动化运维领域的技术应用。《云原生Kubernetes自动化运维实践…

音频焦点 Android Audio Focus

Android 音频焦点详解 音频焦点(Audio Focus)是 Android 系统用于协调多个应用同时访问音频输出的机制。当多个应用需要播放音频时,音频焦点确保用户听到的内容不会混乱(如多个音乐应用同时播放)。以下从核心概念、使…

鸿蒙app 中 web app和h5的通信

参考的官方文档 主要是 通过web 组件 然后 将h5的 链接 放到 web 中 进行加载h5界面 注意 h5中一切的 操作原生的方法 比如说 返回 拍照 从图库拿取照片 都是调用的 原生的app的方法 大概的代码实现

《鸿蒙原生应用开发:掌控Ability生命周期的艺术》

在鸿蒙原生应用开发的广袤天地中,Ability作为构建应用的基本单元,其生命周期的有效管理宛如基石之于高楼,是打造稳定、高效且用户体验卓越应用的关键所在。随着鸿蒙生态的蓬勃发展,深入理解并巧妙运用Ability生命周期,…

华为OD机试2025A卷 - 工号不够用了怎么办(Java Python JS C++ C )

最新华为OD机试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 题目描述 3020年,空间通信集团的员工人数突破20亿人,即将遇到现有工号不够用的窘境。 现在,请你负责调研新工号系统。继承历史传统,新的工号系统由小写英文字母(a-z)和数字(0-9)两部分构…