前言
很多时候用到了服务端和客户端的通信,这个时候可能就需要用到socket。
在此会介绍下socket是什么、server端、client端、pyinstaller打包等内容。
socket 是计算机网络编程中的一个重要概念,它提供了一种用于不同计算机进程间通信的机制。在计算机网络中,socket 通常指的是一个端点,用于实现网络通信。
在 Python 中,socket 库提供了创建和操作 socket 的功能。通过这个库,您可以轻松地实现网络通信,例如创建一个服务器来监听客户端的连接,或者创建一个客户端来连接到服务器。
- from socket import *
-
- # 定义服务端
- server_socket=socket()
- # 绑定地址、端口
- server_socket.bind((gethostname(),9999))
- # 开始监听
- server_socket.listen()
-
- while True:
- # 建立客户端连接
- client_socket, addr = server_socket.accept()
- print('连接地址:', addr)
-
- # 接收客户端发送的数据
- data = client_socket.recv(1024)
- print('接收数据:', data.decode('utf-8'))
-
- data="测试数据".encode('utf-8')
- client_socket.send(data)
-
- while True:
- try:
- msg=input("请输入:")
- if msg=="exit":
- break
-
- data=msg.encode('utf-8')
- client_socket.send(data)
- except:
- # 连不上,那就退出
- break
- from socket import *
-
- server="192.168.1.111"
- # 定义客户端
- client_socket=socket()
- # 连接到服务端
- client_socket.connect((server,9999))
- # 给服务端发送消息
- client_socket.send(b'hello')
-
- try:
- # 保持连接并发送/接收数据
- while True:
- # 接收服务器数据
- data = client_socket.recv(1024)
- print('接收数据:', data.decode('utf-8'))
-
- # 发送响应(可选)
- # 发送响应(编码为字节)
- response = '收到数据'.encode('utf-8')
- client_socket.send(response)
-
- except KeyboardInterrupt:
- # 用户中断,关闭连接
- print('退出连接')
- client_socket.close()
-
- except Exception as e:
- # 处理其他异常
- print(f'发生错误: {e}')
- client_socket.close()
如果是常规执行脚本,可以将py文件打包为exe方便日常运行
pyinstaller -F -w -i xx.ico yy.py
-F: 指定打包后的文件为单一的可执行文件,而不是一个包含依赖的文件夹。
-w: 表示创建一个无操作系统的图形用户界面(GUI)的可执行文件。这意味着打包后的程序将不会显示命令行界面。
-i xx.ico: 指定要使用的图标文件。这里的 xx.ico 是您自定义的图标文件名,您需要确保这个文件存在,并且位于命令行工具的当前目录下。
yy.py: 这是您要打包的 Python 脚本文件名。
注意:pyinstaller,是需要通过pip install pyinstaller来安装的,如果运行上述命令还是有命令,可能需要将pyinstaller加入环境变量,该路径一般是python安装目录下的Scripts文件夹
本文主要介绍了socket的简单使用,主要就是server端与client端的通信(连接、发送信息),后面有更高级的应用,再继续更新文章。
Python入门第01篇(Python安装与开发工具)-CSDN博客
Python入门第02篇(pip、字符串、方法、json、io操作)_python json pip-CSDN博客
Python入门第03篇(异常处理、dotenv)_load_dotenv()-CSDN博客
Python入门第04篇(sqlite数据库相关)_cmd中使用sqlite-CSDN博客
Python入门第06篇(FastApi、uvicorn)_fastapi uvicorn-CSDN博客
Python入门第09篇(conda虚拟环境)-CSDN博客