Python之socket简玩

文章目录

一、socket是什么?

二、使用步骤

1.server端

2.client端

3.pyinstaller打包

总结

Python系列文章目录


前言

很多时候用到了服务端和客户端的通信,这个时候可能就需要用到socket。

在此会介绍下socket是什么、server端、client端、pyinstaller打包等内容。


一、socket是什么?

socket 是计算机网络编程中的一个重要概念,它提供了一种用于不同计算机进程间通信的机制。在计算机网络中,socket 通常指的是一个端点,用于实现网络通信。
在 Python 中,socket 库提供了创建和操作 socket 的功能。通过这个库,您可以轻松地实现网络通信,例如创建一个服务器来监听客户端的连接,或者创建一个客户端来连接到服务器。

二、使用步骤

1.server端

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

2.client端

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()

3.pyinstaller打包

如果是常规执行脚本,可以将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系列文章目录

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入门第05篇(爬虫相关)-CSDN博客

Python入门第06篇(FastApi、uvicorn)_fastapi uvicorn-CSDN博客

Python入门第09篇(conda虚拟环境)-CSDN博客

Flask开发webapi初步及过程问题探究_flask webapi-CSDN博客

Linux下docker运行python_linux docker运行python-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《十》Qt各种对话框之QFontDialog

QFontDialog 在介绍 QFontDialog 对话框之前,我们先简单介绍一下 QFont 字体类。QFont 主要用于控制文本显示的字体,字体主要有四大属性:①字体家族 family 决定字体外观家族,比如宋体、楷体等; ②字号 pointSize &am…

css文字和span在一行对不齐

1.需求背景 父盒子中有两个span,但是span中的文字对不齐。如下图,明显右边的文字偏高 处理后的效果(已经对齐,图中标记的是基本的div结构): 2.该问题出现的原因: span1设置的高度比span2内…

thsi指针用法总结

1 c类对象中的变量和函数是分开存储的 2 所以对象共用一份成员函数,类的大小是指非静态的成员变量; this 完成链式操作 const 修饰成员函数

【Java 解析全国详细地址】Java 利用正则表达式完美解析全国省市区地址

这里写自定义目录标题 Java使用正则解析省市区/县 具体地址问题场景上demo运行结果 Java使用正则解析省市区/县 具体地址 问题场景 OCR识别营业执照 获取详细地址并拆分 上demo import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import j…

使用API有效率地管理Dynadot域名,自查账户信息

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

日本岛津电子天平UW UX 系列series 精密电子天平Shimadzu使用说明

日本岛津电子天平UW UX 系列series 精密电子天平Shimadzu使用说明

2024春季春日主题活动策划方案

2024解冻派对“春日浪漫”主题活动策划方案-32P 方案页码:32页 文件格式:pptx 方案简介: 春来一季,新生欢喜 花香丨微风丨阳光 活动唤起【春日浪漫记忆】! 年轻人不一样的派对活动 可以与朋友/小朋友/家人互动…

MT3030 天梯赛

跟MT3029战神小码哥类似,都是贪心堆。注意开long long 这里的堆顶为战斗力最小的,便于贪心的反悔操作。先按容忍度从大到小排序(q中总容忍度取决于最小的容忍度),再向q中存数,存到不能容忍之后再把堆顶踢出…

最简单也最复杂的德语动词,柯桥德语培训

德语人一定遇到过这个难题:ie组合到底发什么音? 说起haben,大家可能第一感觉是“这么简单的动词也要讲?不就是‘拥有’的意思吗?” 没错,haben的基本含义是“拥有,包含”,但是在某些…

Vue3后台管理系统推荐

目录 项目概述 🍟 项目展示 功能特点 🥗 结语 💨 项目概述 🍟 基于Vue 3框架与Element-Plus UI组件库技术精心构建的后端管理模板。该模板系统已成功实现一个基础的权限管理模块,宗旨在于为追求高效二次开发的开发…

制作一个RISC-V的操作系统十四-任务同步和锁

文章目录 并发与同步临界区和锁锁死锁解决死锁自旋锁(spin lock)原子性问题原子操作实现amoswap.w.aq例子 另一种方法自旋锁的注意事项代码其他同步技术 并发与同步 控制流:可理解为任务或进程 中断也可以理解为一个切换到另一个任务&#…

【Linux网络】DHCP原理与配置

目录 一、DHCP工作原理 1.了解DHCP服务 2.使用DHCP的好处 3.DHCP的分配方式 二、DHCP的租约过程 三、DHCP场景应用实验 一、DHCP工作原理 1.了解DHCP服务 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 由Internet工作…

<计算机网络自顶向下> 无连接传输UDP

UDP:User Datagram Protocol “尽力而为”的服务 报文可能丢掉或者乱序好处: 效率高(不建立连接无拥塞控制和流量控制【应用->传输的速率主机->网络的速率】)报文段的头部很小(开销小)UDP被用于 流媒…

数据结构系列-堆排序当中的T-TOK问题

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 之前我们讲到了堆排序的实现逻辑,那么接下来我们重点关注的就是其中的T-TOK问题 T-TOK说简单点,就是说,假如有10000个数据(随机的…

bottle,Python轻量级的Web框架!

目录 前言 安装 特性 基本功能 1. 路由功能 2. 请求参数获取 3. 静态文件服务 4. 模板渲染 高级功能 1. 中间件 2. 插件 3. 异步处理 实际应用场景 1. 小型Web应用 2. RESTful API服务 3. Web界面与后端逻辑分离 4. Web服务的快速原型开发 总结 前言 大家好&#xff0c…

YOLOv9改进策略 | 添加注意力篇 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)

一、本文介绍 本文给大家带来的改进是Triplet Attention三重注意力机制。这个机制,它通过三个不同的视角来分析输入的数据,就好比三个人从不同的角度来观察同一幅画,然后共同决定哪些部分最值得注意。三重注意力机制的主要思想是在网络中引入…

解密数字经济时代,元宇宙企业如何重塑商业价值?

从复盘中感知自我,坚持和过去对话,并引入未来的思考,飞天云动是一个典型的案例。 在科技的飞速发展和数字化浪潮的推动下,元宇宙这一概念如同一颗冉冉升起的新星,吸引了全球的目光。就目前而言,围绕元宇宙…

Ubuntu终端自动补全

文章目录 前言配置安装zsh安装 oh-my-zsh安装自动补全插件zsh-autosuggestions 参考 前言 Oh My Zsh 是一个针对命令行 shell 的开源框架,主要用于增强和美化命令行环境。它建立在 Zsh(一种强大的 shell 替代品)之上,提供了丰富的…

CountDownLatch

什么是CountDownLatch: CountDownLactch是一个同步工具类,用来协调线程之间的同步,其初始值是一个计数器,为线程的数量,当计时器的值为0时,代表此时所有线程的工作全部已经完成 常用方法: 1.cou…

33 信号产生

目录 1.键盘信号 2.显示器回显过程 3.信号产生方式 4.总结 键盘信号 键盘数据是如何输入给内核的,crtlc是怎么变成信号的? 键盘被按下,肯定是os先知道,os怎么知道键盘上有数据呢? c让操作系统每隔一段时间去轮询每…
最新文章