码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python---Socket 网络通信


    Socket :进程之间通信的工具,进程之间想要进行网络通信需要Socket,两个进程之间通过socket进行相互通讯,就必须有服务端和客服端。

    Socket服务端编程

    1. # 1.创建socket对象
    2. import socket
    3. socket_server = socket.socket()
    4. # 2. 绑定socket_server到指定IP和地址
    5. socket_server.bind(("localhost", 8888))
    6. # 3.服务器开始监听端口 listen方法内接收一个int整数,表示允许的链接数量,超出的会等待,可以不填,不填会自动设置一个合理的值
    7. socket_server.listen(1)
    8. # 4.接收客户端链接,获得链接对象
    9. # accept方法是阻塞方法,等待客户端的链接,如果没有链接,就卡在这一行不想下执行了。accept返回的是二元元组(链接对象,客户端的地址信息)
    10. # 等待客户端链接
    11. # result:tuple = socket_server.accept()
    12. # conn =result[0] # 客户端和服务端的链接对象
    13. # address = result[1] # 客户端的地址信息
    14. # 可以通过 变量1,变量2 = socket_server.accept() 的形式,直接接收二元元组内的两个元素
    15. conn, address = socket_server.accept() # 简写
    16. print(f"接收到了客户端的的链接,客户端的信息是:{address}")
    17. while True: # 持续通信
    18. # 5.客户端连接后,通过recv方法,接收客户端发送的消息(要使用客户端和服务端本次链接对象,而不是scoket_server对象)
    19. # recv接收的参数是缓冲区的大小,,一般给1024即可
    20. # recv方法返回值是一个字节数组也就是bytes对象,不是字符串,可以通过decode方法通过UTF-8编码将字节数组转换为字符串对象
    21. data: str = conn.recv(1024).decode("UTF-8")
    22. print(f"客户端发来的消息是:{data}")
    23. # 6.通过conn,调用send方法可以回复消息
    24. msg = input("请输入你要和客户端回复的消息")
    25. if msg == 'exit':
    26. break
    27. conn.send(msg.encode("UTF-8")) # encode方法可以将字符串编码转为字节数组对象
    28. # 7.关闭链接
    29. conn.close()
    30. socket_server.close()

    Socket客户端编程

    1. # Socket客户端编程
    2. # 1.创建socket对象
    3. import socket
    4. socket_client = socket.socket()
    5. # 2. 连接到服务端
    6. socket_client.connect(("localhost",8888))
    7. while True:
    8. # 3.发送消息
    9. msg=input("请输入你要和服务端发送的消息")
    10. if msg == 'exit':
    11. break
    12. socket_client.send("你好呀".encode("UTF-8"))
    13. # 4. 接收返回消息
    14. rece_data = socket_client.recv(1024)
    15. print(f"服务端回复的消息是:{rece_data.decode('UTF-8')}")
    16. # 5.关闭连接
    17. socket_client.close()

  • 相关阅读:
    openGauss学习笔记-92 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT SQL覆盖和限制
    算法|每日一题|掷骰子等于目标和的方法数|动态规划
    索引的创建与设计原则(2)(适合创建索引情况 )
    使用Spire.PDF for Python插件从PDF文件提取文字和图片信息
    ADW300物联网电力仪表-ONENET_STUDIO物模型方案操作说明
    java-php-python-基于Ssm学生信息管理系统计算机毕业设计
    JSONP解决跨域问题
    顺丰面试,第二个问题把我劝退了!
    Generative Adversarial Nets
    2022年CCF推荐国际学术会议和期刊(人工智能领域)
  • 原文地址:https://blog.csdn.net/weixin_52053631/article/details/134066288
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号