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 相关文章推荐
Python 获取新浪微博的最新公共微博实例分享
Jul 03 Python
django rest framework之请求与响应(详解)
Nov 06 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Python处理菜单消息操作示例【基于win32ui模块】
May 09 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
python绘制封闭多边形教程
Feb 18 Python
Pycharm 安装 idea VIM插件的图文教程详解
Feb 21 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
Jupyter Notebook的连接密码 token查询方式
Apr 21 Python
浅谈django不使用restframework自定义接口与使用的区别
Jul 15 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 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
php中用文本文件做数据库的实现方法
2008/03/27 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
市场营销求职信范文
2014/02/21 职场文书
优秀员工获奖感言
2014/03/01 职场文书
能源工程专业应届生求职信
2014/03/01 职场文书
目标责任书格式
2014/07/28 职场文书
被告代理词范文
2015/05/25 职场文书
第一书记观后感
2015/06/08 职场文书
把77A收信机改造成收音机
2022/04/05 无线电
Javascript webpack动态import
2022/04/19 Javascript
Redis 异步机制
2022/05/15 Redis