Python socket实现的简单通信功能示例


Posted in Python onAugust 21, 2018

本文实例讲述了Python socket实现的简单通信功能。分享给大家供大家参考,具体如下:

套接字(socket)是计算机网络数据结构,在任何类型的通信开始之前,网络应用程序必须创建套接字,可以将其比作电话的插孔,没有它将无法进行通信

常用的地址家族

  • AF_UNIX:基于文件,实现同一主机不同进程之间的通信
  • AF_INET:基于网络,适用于IPv4
  • AF_INET6:基于网络,使用于IPv6

常见的连接类型

  • SOCK_STREAM:即TCP/IP。面向连接的套接字,通信之前必须建立可靠的连接。面向连接的套接字提供序列化的、可靠的和不重复的数据交付,而没有记录边界。
  • SOCK_DGRAM:即UDP。面向非连接的套接字,通信之前无需建立连接。在数据传输过程中无法保证数据的有序性、可靠性和重复性。然而数据报确实保存了记录边界,意味着数据是以整体发送的,而非事先切割多个片段。

socket通信

  • server端
import socket
server = socket.socket()  # 默认是AF_INET、SOCK_STREAM
server.bind(("localhost",6868))   # 将主机号与端口绑定到套接字
server.listen()   # 设置并启动TCP监听器
while True:
  conn,addr = server.accept()   # 被动接受TCP连接,一直等待连接到达
  while True:
    data = conn.recv(1024)   # 接收TCP消息,并制定最大长度
    if not data:
      print("连接已断开")
      break
    conn.send(data.upper())  # 将接收到的数据转为大写在发回给它
server.close()
  • client端
import socket
client = socket.socket()  # 默认是AF_INET、SOCK_STREAM
client.connect(("localhost",6868))
while True:
  s = input(">>")
  client.send(s.encode("utf-8"))
  data = client.recv(1024)
client.close()

执行结果:

Python socket实现的简单通信功能示例

socketserver模块

使用socketserver实现多并发

import socketserver
class MyServer(socketserver.BaseRequestHandler):
  def handle(self):
    while True:
      self.data = self.request.recv(1024)
      if not self.data:
        print("%s客户端连接已断开"%self.client_address)
        break
      self.request.sendall(self.data.upper())
if __name__ == "__main__":
  server = socketserver.ThreadingTCPServer(("localhost",6969),MyServer)  # 开启一个线程
  server.serve_forever()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python3 与python2 异常处理的区别与联系
Jun 19 Python
python删除不需要的python文件方法
Apr 24 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
python中文编码与json中文输出问题详解
Aug 24 Python
浅谈python中真正关闭socket的方法
Dec 18 Python
python获取当前文件路径以及父文件路径的方法
Jul 10 Python
详解python实现小波变换的一个简单例子
Jul 18 Python
Python 使用指定的网卡发送HTTP请求的实例
Aug 21 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
Python基础之操作MySQL数据库
May 06 Python
Python多进程原理与用法分析
Aug 21 #Python
python安装twisted的问题解析
Aug 21 #Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 #Python
Python多线程原理与用法详解
Aug 20 #Python
Python模拟简单电梯调度算法示例
Aug 20 #Python
django_orm查询性能优化方法
Aug 20 #Python
Python Requests库基本用法示例
Aug 20 #Python
You might like
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
调整PHP的性能
2013/10/30 PHP
php rsa加密解密使用详解
2015/01/14 PHP
php报错502badgateway解决方法
2019/10/11 PHP
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
python实现批量按比例缩放图片效果
2018/03/30 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
化工专业应届生求职信
2013/11/08 职场文书
平面设计岗位职责
2013/12/14 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
赔偿协议书
2015/01/27 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
Python pandas之求和运算和非空值个数统计
2021/08/07 Python